success - ¿Puede establecer o eliminar de forma confiable una cookie durante el procesamiento del lado del servidor de una llamada Ajax(XHR)?
peticion ajax jquery (3)
He hecho algunas pruebas sobre esto yo mismo (durante el procesamiento del lado del servidor de un controlador de solicitud DWR Framework Ajax para ser exactos) y parece que PUEDES manipular con éxito las cookies, pero esto va en contra de lo que he leído sobre las mejores prácticas de Ajax y cómo los navegadores interpretan la respuesta de una XmlHttpRequest. Nota que he probado en:
- IE 6 y 7
- Firefox 2 y 3
- Safari
y en todos los casos las operaciones de cookies estándar en el objeto HttpServletResponse durante el manejo de solicitudes Ajax fueron interpretadas correctamente por el navegador, pero me gustaría saber si es mejor llevar la manipulación de cookies al lado del cliente, o si este servidor (mucho más limpio) Se puede confiar en el manejo de las galletas laterales.
Me gustaría recibir respuestas tanto específicas para el Marco DWR como para Ajax en general.
En el contexto de DWR, puede no ser "seguro".
Al leer el sitio DWR dice:
Es importante que trate la solicitud y la respuesta HTTP como de solo lectura. Si bien los encabezados HTTP pueden pasar por OK, existe una buena posibilidad de que algunos navegadores los ignoren.
Me he tomado esto como que establecer cookies o solicitar atributos es un no-no.
Dicho esto, tengo un código que establece atributos de solicitud (código que escribí antes de leer esa página) y parece funcionar bien (aparte de eliminar las cookies que mencioné en mi comentario anterior).
La manipulación de cookies en el lado del cliente es más bien lo opuesto a la "mejor práctica". Y tampoco debería ser necesario. Las cookies de HttpOnly no se introdujeron por nada.
XMLHttpRequest siempre utiliza el marco de conexión del navegador web. Este es un requisito para que los programas AJAX funcionen correctamente, ya que el usuario se desconectaría si el objeto XHR no tuviera acceso al grupo de cookies del navegador.
Teóricamente es posible que un navegador web simplemente comparta cookies de sesión sin utilizar el marco de conexión del navegador, pero esto nunca (en mi conocimiento) sucedió en la práctica. Incluso el complemento Flash usa las conexiones del navegador web.
Por lo tanto, el resultado final es que es seguro manipular las cookies a través de AJAX. Solo tenga en cuenta que la llamada AJAX nunca podría suceder. No son eventos garantizados, así que no cuentes con ellos.