¿Se puede configurar o eliminar de manera confiable una cookie durante el procesamiento del lado del servidor de una llamada Ajax (XHR)?

StackOverflow https://stackoverflow.com/questions/89579

Pregunta

He realizado algunas pruebas sobre esto yo mismo (durante el procesamiento del lado del servidor de un controlador de solicitudes Ajax de DWR Framework para ser exactos) y parece que PUEDES manipular las cookies con éxito, pero esto va en contra de mucho de lo que he leído sobre las mejores prácticas de Ajax y cómo los navegadores interpretan la respuesta de un XmlHttpRequest.Nota que he probado en:

  • Es decir, 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 una buena práctica enviar la manipulación de cookies al lado del cliente, o si este servidor (mucho más limpio) Se puede confiar en el manejo de cookies laterales.

Agradecería respuestas tanto específicas del DWR Framework como de Ajax en general.

¿Fue útil?

Solución

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 cerraría la sesión si el objeto XHR no tuviera acceso al grupo de cookies del navegador.

En teoría, es posible que un navegador web simplemente comparta cookies de sesión sin utilizar el marco de conexión del navegador, pero esto nunca (que yo sepa) ha sucedido en la práctica.Incluso el complemento Flash utiliza las conexiones del navegador web.

Por tanto, el resultado final es que ES seguro manipular las cookies a través de AJAX.Justo tenga en cuenta que la llamada AJAX nunca suceda.No son eventos garantizados, así que no cuentes con ellos.

Otros consejos

En el contexto de DWR puede que no sea "seguro".

De la lectura el sitio DWR dice:

Es importante que trate la solicitud y respuesta HTTP como de solo lectura.Si bien los encabezados HTTP pueden pasar correctamente, existe una buena posibilidad de que algunos navegadores los ignoren.

He entendido que esto significa que configurar cookies o atributos de solicitud 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 las "mejores prácticas".Y tampoco debería ser necesario.Las cookies HttpOnly no se introdujeron en vano.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top