Cookies entre dominios

Resuelto SundarJavaDeveloper asked hace 14 años • 0 respuestas

Tengo dos aplicaciones web WebApp1 y WebApp2 en dos dominios diferentes.

  1. Estoy configurando una cookie en WebApp1 en HttpResponse.
  2. ¿Cómo leer la misma cookie de HttpRequest en WebApp2?

Sé que suena extraño porque las cookies son específicas de un dominio determinado y no podemos acceder a ellas desde diferentes dominios; Sin embargo, he oído hablar de las cookies CROSS-DOMAIN que se pueden compartir entre varias aplicaciones web. ¿Cómo implementar este requisito utilizando cookies CROSS-DOMAIN?

Nota: estoy intentando esto con aplicaciones web J2EE

SundarJavaDeveloper avatar Jul 27 '10 16:07 SundarJavaDeveloper
Aceptado

Sí, es absolutamente posible obtener la cookie domain1.examplemediante domain2.example. Tuve el mismo problema con un complemento social de mi red social y después de un día de investigación encontré la solución.

Primero, en el lado del servidor necesitas tener los siguientes encabezados:

header("Access-Control-Allow-Origin: http://origin.domain:port");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Methods: GET, POST");
header("Access-Control-Allow-Headers: Content-Type, *");

Dentro del archivo PHP puedes usar$_COOKIE[name]

En segundo lugar, del lado del cliente:

Dentro de su solicitud AJAX debe incluir 2 parámetros

crossDomain: true
xhrFields: { withCredentials: true }

Ejemplo:

type: "get",
url: link,
crossDomain: true,
dataType: 'json',
xhrFields: {
  withCredentials: true
}
Ludovic avatar Sep 16 '2014 06:09 Ludovic

Como dicen otras personas, no puedes compartir cookies, pero podrías hacer algo como esto:

  1. centralizar todas las cookies en un único dominio, digamoscookiemaker.example
  2. cuando el usuario te hace una solicitud, example.comredirigelo acookiemaker.example
  3. cookiemaker.examplelo redirige nuevamente example.comcon la información que necesita

Por supuesto, no es completamente seguro y debes crear algún tipo de protocolo interno entre tus aplicaciones para hacerlo.

Por último, sería muy molesto para el usuario si hiciera algo así en cada solicitud, pero no si es solo la primera.

Pero creo que no hay otra manera.

alcuadrado avatar Jul 27 '2010 09:07 alcuadrado

Hasta donde yo sé, las cookies están limitadas por la política de "mismo origen". Sin embargo, con CORS puede recibir y utilizar las cookies del "Servidor B" para establecer una sesión persistente desde el "Servidor A" en el "Servidor B".

Aunque esto requiere algunos encabezados en el "Servidor B":

Access-Control-Allow-Origin: http://server-a.example.com
Access-Control-Allow-Credentials: true

Y deberá enviar el indicador " withCredentials " en todas las solicitudes del "Servidor A" (por ejemplo xhr.withCredentials = true;:)

Usted puede leer sobre ello aquí:

http://www.html5rocks.com/en/tutorials/cors/

https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS

Vitae Aliquam avatar Apr 06 '2013 00:04 Vitae Aliquam

No existen las cookies entre dominios. Puede compartir una cookie entre foo.example.comy, bar.example.compero nunca entre example.comy example2.com, por razones de seguridad.

Darin Dimitrov avatar Jul 27 '2010 09:07 Darin Dimitrov