我做了一个项目,想要使用socket.io. 现在我在浏览器控制台中有一个错误:
访问"https://www.example.com" EIO = 4 transport = polling t = OwxDnkM '来自origin'https://www.example.com '已被CORS策略阻止:请求的资源上不存在'AUT—Control—BAL—Origin '标头.&&
How you can see I use my sub-domains, with which averything brokes. Awary domain links with their directory.
Client directory is tha basic web application on html, css, js, php. And now to connect with server using io('https://back.escootrent.com/socket.io');
The other directory is server for socket.io with this code:
server.js
const express = require('express');
const https = require('https');
const fs = require('fs');
const app = express();
const options = {
key: fs.readFileSync('./_.escootrent.com_private_key.key'),
cert: fs.readFileSync('./escootrent.com_ssl_certificate.cer')
};
const server = https.createServer(options, app);
const io = require('socket.io')(server);
app.get('/chats', function(req, res) {
res.send('answ');
});
io.on('connection', socket => {
console.log('User connected', socket.id);
})
io.on('disconnect', () => {
console.log('User disconnected', socket.id);
});
server.listen(443, (err) => {
if (err) {
throw Error(err);
}
console.log('Server started!');
});
所有这些都是基于OpenServer和工作与本地参数,但不工作与域.
我试过了,没什么变化
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', 'https://www.escootrent.com');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST');
res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
next();
});
io.origins((origin, callback) => {
if (origin === 'https://www.escootrent.com') {
callback(null, true);
} else {
callback('Origin not allowed', false);
}
});
const cors = require('cors');
app.use(cors());