我的印象是document.cookie = "mySessionCookie=mySessionToken"不会立即在浏览器中设置。
更准确地说,这是我的情况:
document.cookie = "mySessionCookie=; Path=/; Expires=Thu, 01 Jan 1970 00:00:00 GMT"。window.location.reload()确认我已注销。它大多有效,但是,通常情况下,浏览器似乎没有足够的时间在调用之前设置我的新 cookie 值window.location.reload()。
除非我在我的代码中做错了什么,否则这种行为表明它document.cookie = "value"不是在同一个堆栈上执行的(因此,它本身可能不是异步的,但是当与其余代码一起使用时,它具有不可预测的行为)。
所以,我的问题是,可以document.cookie = "value"在不同的堆栈上执行吗?
事实上,正如@charlietfl 对我最初问题的评论所指出的那样,document.cookiesetter 将立即设置 cookie。
我真正的问题是我的程序中有一个错误,我没有注意这样一个事实,即当设置 cookie 时没有提供路径和 cookie 值时,浏览器将根据当前 URI 设置 cookie 的“路径”使用 JavaScript。
例如,如果要在example.com查看 at 的资源时清除 at 的所有 URI 的会话http://example.com/fake-resource,则必须明确写入:
document.cookie = "sessionToken=;Path=/;Expires=Thu, 01 Jan 1970 00:00:00 GMT"
否则(即如果 Path=/ 被省略)浏览器将创建第二个 cookie example.com/fake-resource,这样主 cookie 将继续存在。
| 归档时间: |
|
| 查看次数: |
4599 次 |
| 最近记录: |