[英]CORS Error in socket.io when using NodeJS / Express and HTTPS
我正在使用以下代码,以便能够从应用程序的不同部分访问socket.io。 一切在开发服务器上都可以正常工作,但是一旦我在HTTPS服务器上尝试在生产环境中使用它,它就会失败,并显示以下错误。
CORS策略已阻止从原点' http://127.0.0.1:9999 '访问位于' https://nodejs.demo.net/socket.io/?EIO=3&transport=polling&t=MkQBnlU '的XMLHttpRequest预检请求未通过访问控制检查:当请求的凭据模式为“ include”时,响应中“ Access-Control-Allow-Origin”标头的值不得为通配符“ *”。 XMLHttpRequest发起的请求的凭据模式由withCredentials属性控制
在我的app.js文件中,我是这样启动的
const express = require('express');
const app = express();
const https = require('https');
const io = require('sio').init(https);
var options = {
key: fs.readFileSync('./cert/nodejs.demo.net.key'),
cert: fs.readFileSync('./cert/ServerCertificate.cer')
};
https.createServer(options, app).listen(443,()=>{
console.log("listening secure via SSL on 443")
})
这是sio文件的内容
const socketio = require('socket.io');
let io;
module.exports = {
init: function(server) {
if (io) {
throw new Error("socket.io already initialized");
}
// initalize socket.io to this server
io = socketio(server);
// put other socket.io initialization code here
return io;
}
get: function() {
if (!io) {
throw new Error("socket.io has not yet been initialized");
}
return io;
}
}
那么,在哪里以及如何解决cor的错误?
您的服务器应允许CORS请求,请尝试使用CORS模块 :
// Enable All CORS Requests
const cors = require('cors')
app.use(cors())
使用您的代码:
const express = require('express');
const app = express();
const https = require('https');
const io = require('sio').init(https);
const cors = require('cors');
app.use(cors());
var options = {
key: fs.readFileSync('./cert/nodejs.demo.net.key'),
cert: fs.readFileSync('./cert/ServerCertificate.cer')
};
https.createServer(options, app).listen(443,()=>{
console.log("listening secure via SSL on 443")
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.