Ошибка Socket.io, NodeJS и ReactJS CORS
Для начала я прочитал кучу вопросов по той же проблеме.
Когда я открываю соединение с сокетом через клиент React обычным способом, просто URL как параметр, я не получаю эту ошибку, соединение установлено.
Но когда я это сделаю:
const io = ioClient(webSocketUrl, {
transportOptions: {
polling: {
extraHeaders: getAuthenticationToken()
}
}
});
Запрос каждый раз возвращает ошибку CORS.
Я пытался:
Установите исходную точку так:
io.origins(['*:*']);app.use (function (req, res, next) {res.setHeader ("Access-Control-Allow-Origin", req.header ("origin") || req.header ("x-forwarded-host") | | req.header ("referer") || req.header ("host")); res.header ("Access-Control-Allow-Methods", "GET, POST, OPTIONS, PUT, PATCH, DELETE"); res.header ("Access-Control-Allow-Headers", "X-Requested-With, content-type"); res.setHeader ("Access-Control-Allow-Credentials", false); next ();}) ;
А также это:
app.use (cors ()); app.options ("*", cors ());
Ничего из вышеперечисленного не помогло.
Буду признателен за любую помощь.
Ответы
Нашел ответ!
Для тех, у кого такая же проблема, я сделал это следующим образом:
const io = require("socket.io")(server, {
handlePreflightRequest: (req, res) => {
const headers = {
"Access-Control-Allow-Headers": "Content-Type, Authorization",
"Access-Control-Allow-Origin": req.headers.origin, //or the specific origin you want to give access to,
"Access-Control-Allow-Credentials": true
};
res.writeHead(200, headers);
res.end();
}
});