在服务器端处理Ajax(XHR)调用期间,您能否可靠地设置或删除cookie?

Pet*_*ter 7 cookies ajax xmlhttprequest server-side dwr

我自己做了一些测试(确切地说,在DWR框架Ajax请求处理程序的服务器端处理期间),你似乎可以成功地操作cookie,但这与我在Ajax最佳实践和浏览器如何解释来自XmlHttpRequest的响应.注意我测试过:

  • IE 6和7
  • Firefox 2和3
  • 苹果浏览器

并且在所有情况下,浏览器正确解释了Ajax请求处理期间HttpServletResponse对象上的标准cookie操作,但我想知道是否最好将cookie操作推送到客户端,或者这个(更干净)服务器可以信任边cookie处理.

我会欢迎特定于DWR框架和Ajax的答案.

64B*_*Bob 9

XMLHttpRequest始终使用Web浏览器的连接框架.这是AJAX程序正常工作的要求,因为如果XHR对象无法访问浏览器的cookie池,则用户将被注销.

理论上,Web浏览器可以在不使用浏览器连接框架的情况下简单地共享会话cookie,但这实际上从未(据我所知)发生过.甚至Flash插件也使用Web浏览器的连接.

因此最终结果是通过AJAX操作cookie是安全的.只是要记住的是,AJAX调用可能永远不会发生.它们不是保证事件,所以不要指望它们.