Как исправить проблему политики cors "У него нет статуса HTTP ok" в Socket.io - PullRequest
0 голосов
/ 31 марта 2019

Я настраиваю сервер 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 и даже другие языки, которые видели эту ошибку.

...