2009-06-24 7 views
35

Quiero saber si, cuando realizo un $ .post (...) con jQuery, ¿se envía alguna cookie al servidor en la solicitud posterior?¿jQuery envía cookies en una publicación?

Gracias!

+2

Si utiliza Firebug, se puede ver en la "Consola "área para ver las solicitudes que se realizan. Mire en los encabezados para datos de cookies. –

Respuesta

54

Las cookies se envían con solicitudes de Ajax.

Cuando se establece el indicador HTTPOnly para una cookie, esta cookie se oculta de los scripts del lado del cliente, pero la cookie se sigue enviando con solicitudes Ajax.

+3

HTTPOnly no afecta las solicitudes AJAX/HTTP, solo oculta la cookie del script del lado del cliente. Todavía se enviará al servidor. –

+1

@Christian - corregido, gracias. –

2

Usando las mismas cookies en el cliente y el servidor no es posible cuando tiene httpOnlyCookies encendido. Hay muy buenas razones interruptor de esto en demasiado:

http://www.codinghorror.com/blog/archives/001167.html

+0

+1 ¡Gracias por ese enlace! – MSpreij

+2

Esto es incorrecto. Eche un vistazo a esta pregunta para obtener una explicación muy buena de HTTPOnly + AJAX: http://stackoverflow.com/questions/27972/are-httponly-cookies-a-viable-option-for-an-ajax-website –

2

El uso de Firefox + Firebug se puede ver exactamente lo que envía jQuery, y cómo. Útil para la depuración!

0

Lamento ser una manta húmeda, pero voy a contradecir las vibraciones positivas aquí y decir NO.

Actualmente estoy compilando una aplicación usando $ .post para conectarme a mi back-end API, que funciona con Express y node.js. Estoy usando el middleware del analizador de cookies Express para leer las cookies enviadas en cada solicitud. Si toco mi endpoint directamente a través del navegador, el servidor de back-end puede ver las cookies visibles en mi dominio. Sin embargo, cuando uso $ .post en mi aplicación, el objeto cookie está en blanco.

Es posible que me falta algo, pero he estado probando esto durante el último par de horas, y la conclusión a la que he llegado es que las cookies simplemente no se envían utilizando un jQuery $ .post solicitud:/

+0

Pruebe con una publicación html típica. Su depurador de cookies suena mal. Si las cookies se envían o no, es una decisión del navegador, no script/jquery. –

+8

Esto se debe a que está haciendo una solicitud entre dominios, y las cookies no se envían con solicitudes de XHR entre dominios. http://stackoverflow.com/questions/7911710/jquery-ajax-call-not-sending-cookie – Josh

0

Una cosa a considerar es la ruta de cookies. Si un script cargado con Ajax establece una cookie, su ruta puede ser diferente de la página principal, poniéndolo en un ámbito diferente para algunas aplicaciones de servidor o JQuery. Pasé un tiempo hoy dando vueltas con esto y luego noté que las cookies que estaba teniendo problemas para leer tenían un camino diferente.

solución simple para mí fue la de establecer la ruta de todas las cookies a/con jQuery en mi solicitud de ajax de este modo:

$.cookie("isolates_grid_tgl", "true", { path: "/" }); 

firebug cookies view

Cuestiones relacionadas