每个cookie规范不允许这样做(与ajax调用的Same Origin Policy相同)。就SOP而言,当您从file:///运行javascript时(例如在UIWebView内部),它不适用。这是有据可查的,也在我的例子中工作。那么饼干怎么样?
我有一个应用程序通过javascript运行向服务器发出请求,无论是出于所有目的还是本地(file:///)。身份验证请求设置一个名为cookie的cookie,例如'alpha',路径:'/'和域'serverdomain.com'。在注销期间,我需要清除前面提到的cookie,但我觉得我的尝试失败了,因为我无法访问它,因为它被认为是来自不同的域。这听起来很熟悉吗?还是我离开这里?有没有办法实现这样的壮举?
实施例
我正在Chrome上运行我的javascript(使用file:///作为URI)。我启动登录,很快我就可以在cookie管理器插件中看到以下cookie(这不是实际的cookie,但看起来相同,除了名称,我们可以说它是'alpha')。 Cookie不会仅标记为http,但会选中“会话”和“安全”复选框(与下面的屏幕截图不同)。
现在请记住,如果我使用Chrome的'inspect element'功能并转到'Cookies',我会收到'此网站没有Cookie'。
在注销期间,我需要删除该cookie。所以我在javascript中执行此操作:
document.cookie="alpha=; expires=Thu, 10 May 2000 15:07:07 GMT"
cookie不会消失。我可以让它消失的唯一方法是从cookie管理器中删除它。我是否应该能够删除此cookie(从file:///运行时)?如果是这样的话?
答案 0 :(得分:2)
如果cookie是在其他域上创建的,则客户端不会将此cookie发送到第二个域上的服务器,因此您无法将其删除。您可以在此域中设置具有相同名称的cookie,但该cookie不会与第一个域中存在的cookie相同。