1

这是一个有趣的问题。据说我要在我现有的应用程序中引入一项功能。应用程序在用户系统上写入 Cookie 之前必须征得用户同意。(暗示我的应用程序在用户系统上写入的 cookie 很少)。

所以设计是这样的,对应用程序的所有请求都被拦截,对于每个请求,我们检查是否有一个标志要求应用程序写入 cookie(这个标志是从一个称为 IP 的特殊页面发送的)或者它检查用户机器上的特殊 cookie 表示同意 cookie。

现在,如果应用程序在用户的机器上没有看到同意 Cookie,它会将用户重定向到带有其 URL 的 IP。在 IP 上有一个接受 Cookie 按钮。如果用户接受 cookie,则 ajax 请求会发送到服务器,代码检测到写入 cookie 的标志并将 cookie 写入用户的浏览器。

我可以看到编写 cookie 的代码已执行,之后的预期行为是以正常方式处理请求。但不幸的是,它会将其重定向回 IP。

我有一种强烈的感觉,即某些浏览器会丢弃 Cookie。请提出这里可能有什么问题。还请让我知道如何在我的浏览器上检查它是否正在丢弃 Cookie。

我也觉得它与P3P标头有关。请帮忙。

4

1 回答 1

1

可能有两件事:

  1. 无论浏览器如何,您每次都会被重定向到 IP。
  2. 在少数浏览器中,您可以与您的应用程序相处融洽,而其他浏览器则不是。

情况 1:您需要将 P3P 标头添加到响应中。请检查http://viralpatel.net/blogs/2008/12/how-to-set-third-party-cookies-with-iframe.html

情况 2:如果响应状态是重定向,则可能很少有浏览器(例如最新版本的 Mozilla Firefox(12))缓存响应状态。默认情况下,重定向是永久重定向,即状态码 302。在这种情况下,IP 将继续在 Mozilla 中重定向到自身。

解决方案:您需要使用临时重定向,即状态码 307。

于 2012-05-24T16:24:20.453 回答