Errore di Socket.io, NodeJS e ReactJS CORS
Per cominciare, ho letto un mucchio di domande riguardanti lo stesso problema.
Quando apro la connessione con il socket tramite il client React nel modo normale, solo l'URL come parametro, non ottengo questo errore, connessione stabilita.
Ma quando lo faccio:
const io = ioClient(webSocketUrl, {
transportOptions: {
polling: {
extraHeaders: getAuthenticationToken()
}
}
});
La richiesta restituisce ogni volta un errore CORS.
Ho provato a:
Imposta l'origine in questo modo:
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 ();}) ;
E anche questo:
app.use (cors ()); app.options ("*", cors ());
Nessuno dei precedenti ha funzionato.
Gradirei qualsiasi aiuto.
Risposte
Trovato la risposta!
Per chiunque abbia lo stesso problema, ecco come l'ho fatto:
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();
}
});