Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

348
Vistas
Tengo un error CORS en socket.io (Node.js) cuando quiero conectarme a eso

Tengo un servicio socket.io al que diferentes dispositivos quieren conectarse y, por eso, es muy importante para mí que mi servicio socket.io permita todos los orígenes (incluso cuando un cliente no establece ningún origen en el encabezado) para conectarse a eso, este es mi io (lado del servidor):

 const server = http.createServer(app); // app is express app const io = require('socket.io')(server,{ allowEIO3: true, cors: { origin: '*', credentials: true }, });

y este es mi cliente:

 const socket = io('http://localhost:4855/', { timeout: 60 * 1000, reconnection: true, forceNew: true, query: { authorization: `Bearer ${token}` }, // extraHeaders: { // Authorization: "ksi", // "Access-Control-Allow-Origin": "*", // "Access-Control-Allow-Credentials": true // }, // Headers: { // "Access-Control-Allow-Origin": 'http://localhost', // }, // headers: { // "Access-Control-Allow-Origin": "*", // "Access-Control-Allow-Credentials": true // } }); socket.connect();

MENSAJE DE ERROR: desde el origen 'http://localhost' ha sido bloqueado por la política CORS: el valor del encabezado 'Access-Control-Allow-Origin' en la respuesta no debe ser el comodín '*' cuando el modo de credenciales de la solicitud es 'incluir'. El modo de credenciales de las solicitudes iniciadas por XMLHttpRequest está controlado por el atributo withCredentials.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El error es bastante claro.

El valor del encabezado 'Access-Control-Allow-Origin' en la respuesta no debe ser el comodín '*' cuando el modo de credenciales de la solicitud es 'incluir'.

Y tú dijiste:

 origin: '*',

Por lo tanto, debe devolver el origen real y no el comodín.

La documentación dice:

Todas las opciones se reenviarán al paquete cors. La lista completa de opciones se puede encontrar aquí.

Que a su vez dice :

origin: Configura el encabezado CORS Access-Control-Allow-Origin. Valores posibles:

  • Booleano: configure el origen en verdadero para reflejar el origen de la solicitud, según lo define req.header('Origin'), o configúrelo en falso para deshabilitar CORS.
  • Cadena: establezca el origen en un origen específico. Por ejemplo, si lo configura en "http://example.com", solo se permitirán las solicitudes de "http://example.com".
  • RegExp: establezca el origen en un patrón de expresión regular que se utilizará para probar el origen de la solicitud. Si es una coincidencia, se reflejará el origen de la solicitud. Por ejemplo, el patrón /example.com$/ reflejará cualquier solicitud que provenga de un origen que termine en "example.com".
  • Matriz: establezca el origen en una matriz de orígenes válidos. Cada origen puede ser una cadena o una expresión regular. Por ejemplo, ["http://example1.com", /.example2.com$/] aceptará cualquier solicitud de "http://example1.com" o de un subdominio de "example2.com".
  • Función: establezca el origen en una función que implemente alguna lógica personalizada. La función toma el origen de la solicitud como el primer parámetro y una devolución de llamada (llamada devolución de llamada (err, origen), donde el origen es un valor que no es función de la opción de origen) como el segundo.

Como desea permitir cualquier origen , no puede usar una cadena o una matriz.

Las otras opciones funcionarían todas, pero la más simple es la booleana.

 cors: { origin: true, credentials: true },
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda