0

根据 cookie 规范,这是不允许的(与 ajax 调用的同源策略相同的原则)。就 SOP 而言,当您从 file:/// 运行 javascript 时(例如在 UIWebView 内部),它并不适用。这是有据可查的,并且在我的示例中也有效。饼干呢?

我有一个应用程序通过运行 javascript 向服务器发出请求,用于所有意图和目的,本地 (file:///)。身份验证请求设置一个名为“alpha”、路径:“/”和域“serverdomain.com”的 cookie。在注销期间,我需要清除上述 cookie,但我感觉我的尝试失败了,因为我无权访问它,因为它被认为来自不同的域。这听起来很熟悉吗?还是我离这儿很远?有没有办法完成这样的壮举?

例子

我在 Chrome 上运行我的 javascript(使用 file:/// 作为 URI)。我开始登录,很快我就可以在 cookie 管理器插件中看到以下 cookie(这不是实际的 cookie,但除了我们可以说它是 'alpha' 的名称外,它看起来一样)。该 cookie 并未仅标记为 http,而是选中了“会话”和“安全”复选框(与下面的屏幕截图不同)。

来自 cookie 管理器的屏幕截图

现在请记住,如果我使用 Chrome 的“检查元素”功能并转到“Cookie”,我会得到“此站点没有 Cookie”。

chrome - 检查元素/cookie

在注销期间,我需要删除该 cookie。所以我在javascript中这样做:

document.cookie="alpha=; expires=Thu, 10 May 2000 15:07:07 GMT"

饼干不会消失。我可以让它消失的唯一方法是从 cookie 管理器中删除它。我应该能够删除这个 cookie(从 file:/// 运行时)吗?如果有怎么办?

4

1 回答 1

2

如果 cookie 是在不同的域上创建的,则客户端不会将此 cookie 发送到第二个域上的服务器,因此您无法将其删除。您可以在此域上设置一个同名的 cookie,但它与第一​​个域上存在的 cookie 不同。

于 2012-05-11T06:41:03.307 回答