所以,我已经制作了一个使用NodeJS和Socket.IO的应用程序,它运行良好。最近,我安装了SSL证书,并将套接字从http://example.com:8080
移至https://example.com:8443
。但是现在,我收到了这个错误:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://example.com:8443/socket.io/?EIO=3&transport=polling&t=M4Kox0q. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
现在,我已经做了一些研究,我认为这是因为端口(:443
到:8443
的请求),但我怎么能让它不被阻止?
这是客户端代码:
socket = io.connect("https://example.com:8443", {
secure: true
});
服务器端:
io = require('socket.io');
server = require('https').createServer({
key: fs.readFileSync('./cloudflare.key'),
cert: fs.readFileSync('./cloudflare.crt')
}, (req, res) => {
res.writeHead(200, {
'Access-Control-Allow-Origin': '*'
});
}).listen(socket_port);
io = io(server, {
origins: 'example.com:*'
});
除此之外,在Dev Tools的Network
标签中,请求列出了523 No Reason Phrase
状态代码。
可能有用的其他信息:
Full
选项)。答案 0 :(得分:1)
如果使用express,您需要通过使用此简单配置安装CORS节点包来正确处理您的CORS。
const cors = require('cors')
let app = express()
app.use(cors({credentials: true, origin: true}))
OR
io = require('socket.io');
server = require('https').createServer({
key: fs.readFileSync('./cloudflare.key'),
cert: fs.readFileSync('./cloudflare.crt')
}, (req, res) => {
res.writeHead(200, {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept, Authorization"
});
}).listen(socket_port);
io = io(server, {
origins: 'example.com:*'
});
您还可以查看这些网站Enable CORS或MDN CORS处理。 我希望这有帮助。