【发布时间】:2019-08-21 22:02:07
【问题描述】:
我正在设置 socket.io 服务器,但 cors 策略有问题。例如:如果脚本使用 get 请求一切正常,但在连接到 socket.io 服务器时,此错误会显示在控制台上
从源“https://www.domain.xyz”访问位于“https://ser.domain.xyz/iotCloud/?EIO=3&transport=polling&t=MdKfMsN”的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:它没有 HTTP ok 状态。
我认为这是 socket.io 的问题。我尝试了一切,但没有任何效果。
var server = express();
var app = require('http').Server(server);
const io = new socket(app, {
path : "/iotCloud",
origins: 'https://www.domain.xyz'
})
server.use(function(req, res, next){
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'Access-Control-Allow-Origin,*');
res.header('Access-Control-Allow-Credentials', true);
res.header('Access-Control-Allow-Origin', 'https://www.projectann.xyz');
next();
})
我也试过这个而不是 server.use
var corsOptions = {
origin: 'https://www.domain.xyz',
credentials: true,
methods: "GET,HEAD,PUT,PATCH,POST,DELETE,OPTIONS",
preflightContinue: true,
optionsSuccessStatus: 204,
}
server.use(cors(corsOptions))
客户端 - ServiceWorker
importScripts('../cdn/js/socket.io.js');
var es = {};
es.socket = io("https://ser.domain.xyz",{
transportOptions: {
polling: {
extraHeaders: {
server: "AnnIoT",
"loginObject": JSON.stringify(m.data)
}
}
},
secure: true,
rejectUnauthorized: false,
path: '/iotCloud'
});
我到处搜索堆栈、github 甚至其他发现此错误的语言。
【问题讨论】:
标签: javascript node.js socket.io cors