Я настраиваю сервер socket.io, и есть проблема с политикой cors. Например: если скрипт использует запрос get, все работает, но при подключении к серверу socket.io эта ошибка отображается на консоли
Доступ к XMLHttpRequest по адресу https://ser.domain.xyz/iotCloud/?EIO=3&transport=polling&t=MdKfMsN' от источника 'https://www.domain.xyz' заблокирован политикой 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 и даже другие языки, которые видели эту ошибку.