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

331
Vistas
La búsqueda de Javascript no está enviando el encabezado de la cookie (CORS)

Estoy tratando de enviar cookies a un script PHP dentro de una solicitud CORS de recuperación de JavaScript. La solicitud comienza en https://sub1.example.com y contiene las siguientes opciones:

 let response = await fetch('https://sub2.example.com/target.php', { method: "POST", headers: headers, body: formData, mode: 'cors', credentials: 'include', cache: 'no-store' });

El script PHP correspondiente establece los siguientes encabezados:

 header('Access-Control-Allow-Origin: https://www.example.com'); header('Access-Control-Allow-Methods: POST, OPTIONS'); header('Access-Control-Allow-Credentials: true'); header('Access-Control-Allow-Headers: Origin, Content-Type, Accept, Authorization, X-Request-With, Set-Cookie, Cookie, Bearer');

Pero el encabezado de la cookie no se envía con la solicitud. También probé:

 let headers = new Headers(); headers.set('Cookie', document.cookie);

Eso tampoco tuvo efecto. ¿Qué estoy haciendo exactamente mal aquí?

Revisé la pestaña Red en las Herramientas de desarrollo. También $_COOKIE en PHP Script está vacío. No hay absolutamente ningún error. También puedo ver que el encabezado de la cookie se envía en cualquier solicitud de extracción que no sea fetch .

EDITAR: Aquí están los Ajustes de una de las Cookies:

 Name: PHPSESSID Path: / Secure: true SameSite: none

No puedo compartir el Dominio porque no es público. Pero el dominio de la cookie tiene el mismo valor que el origen en el encabezado de la solicitud (menos el https://).

EDIT 2: Cambió la URL de búsqueda para aclarar lo que está sucediendo.

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

0

Problema

Tenga en cuenta que, dependiendo de

  • el valor del atributo Path de la cookie,
  • el valor efectivo del atributo Domain de la cookie,
  • el valor del atributo Secure de la cookie,
  • el valor efectivo del atributo SameSite de la cookie,
  • los orígenes de emisión y destino de la solicitud,

una cookie puede o no adjuntarse a la solicitud. De particular relevancia para su caso es el atributo Domain ; echa un vistazo a la página de MDN sobre el tema :

El atributo Domain especifica qué hosts pueden recibir una cookie. Si no se especifica, el atributo predeterminado es el mismo host que configuró la cookie, excluyendo los subdominios . Si se especifica Domain , los subdominios siempre se incluyen. Por lo tanto, especificar Domain es menos restrictivo que omitirlo. Sin embargo, puede ser útil cuando los subdominios necesitan compartir información sobre un usuario.

Está configurando la cookie de la siguiente manera en el origen https://sub1.example.com :

 Set-Cookie: PHPSESSID=whatever; Path=/; SameSite=None; Secure

Por lo tanto, esa cookie se adjuntará a las solicitudes (con credenciales) cuyo origen de destino sea https://sub1.example.com y ningún otro.

Solución

Si desea que su cookie se envíe a todos los orígenes seguros cuyo dominio sea un subdominio de example.com , debe establecer explícitamente su Domain en example.com .


Acerca del envío de cookies con fetch

El estándar Fetch especifica una lista de nombres de encabezados prohibidos ; Cookie es una de ellas. No puede establecer un encabezado llamado Cookie en una solicitud enviada con fetch ; la norma simplemente lo prohíbe . Si desea adjuntar cookies existentes a una solicitud de origen cruzado, use el valor 'include' para el parámetro de credentials pasado en las opciones de fetch .

about 4 years ago · Juan Pablo Isaza Denunciar

0

Normalmente, no se supone que las cookies se adjunten a las solicitudes de verificación previa en el modo CORS. Es posible que desee comprobar esto.

Nota: Los navegadores no deben enviar credenciales en solicitudes de verificación previa, independientemente de esta configuración. Para más información ver: CORS > Solicitudes con credenciales.

https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

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