¿Puede una respuesta AJAX establecer una cookie?


¿Puede una respuesta AJAX establecer una cookie? Si no, ¿cuál es mi solución alternativa? ¿Debería configurarlo con Javascript o algo similar?

 229
Author: Martin., 2010-07-27

4 answers

Yes , puede establecer una cookie en la solicitud AJAX en el código del lado del servidor tal como lo haría con una solicitud normal, ya que el servidor no puede diferenciar entre una solicitud normal o una solicitud AJAX.

Las solicitudes AJAX son solo una forma especial de solicitar al servidor, el servidor tendrá que responder como en cualquier solicitud HTTP. En la respuesta de la solicitud puede agregar cookies.

 208
Author: this. __curious_geek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-27 04:46:14

De acuerdo con el w3 spec sección 4.6.3 para XMLHttpRequest un agente de usuario debe respetar el encabezado Set-Cookie. Así que la respuesta es sí, deberías poder hacerlo.

Cita:

Si el agente de usuario admite la administración de Estado HTTP, debe persistir, descartar y enviar cookies (como se recibió en la respuesta Set-Cookie encabezado, y enviado en el encabezado de la cookie) según corresponda.

 277
Author: Strelok,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-06 13:49:38

Para el registro, tenga en cuenta que todo lo anterior es (todavía) verdadero solo si la llamada AJAX se realiza en el mismo dominio. Si está buscando configurar cookies en otro dominio utilizando AJAX, está abriendo una lata de gusanos totalmente diferente. Sin embargo, leer cookies entre dominios funciona (o al menos el servidor las sirve; si el UA de su cliente permite que su código acceda a ellas es, nuevamente, un tema diferente; a partir de 2014 lo hacen).

 80
Author: Bogdan Stăncescu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-18 23:39:04

También verifique que su servidor no esté configurando cookies seguras en una solicitud que no sea http. Acabo de descubrir que mi solicitud ajax estaba recibiendo una sesión php con" seguro " establecido. Debido a que no estaba en https, no estaba devolviendo la cookie de sesión y mi sesión se estaba restableciendo en cada solicitud ajax.

 6
Author: Phil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-27 16:36:08