Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

336
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda