我自己对此做了一些测试(准确地说是在 DWR 框架 Ajax 请求处理程序的服务器端处理期间),看来您可以成功地操作 cookie,但这与我在 Ajax 最佳实践中阅读的很多内容相悖浏览器如何解释来自 XmlHttpRequest 的响应。注意我已经测试过:

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

在所有情况下,浏览器都正确解释了 Ajax 请求处理期间对 HttpServletResponse 对象的标准 cookie 操作,但我想知道将 cookie 操作推送到客户端是否是最佳实践,或者这个(更干净的)服务器是否是最佳实践侧面 cookie 处理是可信的。

我欢迎针对 DWR 框架和一般 Ajax 的回答。

有帮助吗?

解决方案

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

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

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

其他提示

在 DWR 的背景下,它可能并不“安全”。

来自阅读 DWR网站 它说:

将 HTTP 请求和响应视为只读非常重要。虽然 HTTP 标头可能会正常通过,但某些浏览器很可能会忽略它们。

我认为这意味着设置 cookie 或请求属性是禁忌。
话虽如此,我有确实设置请求属性的代码(我在阅读该页面之前编写的代码)并且它似乎工作正常(除了删除我在上面的评论中提到的cookie)。

在客户端操作 cookie 与“最佳实践”相反。而且这也不应该是必要的。HttpOnly cookie 的引入并非无缘无故。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top