Sea*_*ean 6 cookies firefox setcookie
我在这里失去了理智 - 我正在调查一个问题,我的应用程序中的某些注销功能无法正常工作,因为身份验证 cookie 没有被清除。问题是我们的“退出”端点确实set-cookie在响应中包含了适当的标头 - 这是我在 Firefox 中看到的原始响应:
set-cookie: Auth.myapp=; domain=app.mydomain.com; expires=Thu, 26-Nov-2020 13:19:20 GMT; path=/; secure; HttpOnly
Run Code Online (Sandbox Code Playgroud)
Firefox 在控制台中报告此错误:
Cookie“Auth.myapp”已被拒绝,因为它已经过期
这有点令人困惑,我之前不仅成功地使用set-cookie了过去的日期expires,它甚至被编入了RFC6265作为请求客户端删除 cookie 的可接受方式:
最后,为了删除 cookie,服务器返回一个 Set-Cookie 标头,其中包含过去的过期日期。仅当 Set-Cookie 标头中的 Path 和 Domain 属性与创建 cookie 时使用的值匹配时,服务器才能成功删除 cookie。
所以我需要设置一个expires过去的日期来清除 cookie ......但这样做会导致浏览器拒绝它吗?有谁知道这里发生了什么?
为了清楚起见,我已经检查了 cookie 名称、路径secure和SameSite匹配(更新:我怀疑是因为我没有明确指定 SameSite 这可能是原因,但在确保 cookie 被设置和清除SameSite=None之后是还是行不通)。
mur*_*uru 11
据我所知,该消息是无害的 - 根据我的测试,cookie 确实被删除了。谷歌搜索消息会导致这个变更集,这表明删除确实发生了,只是有额外的日志记录。
// If the new cookie has expired -- i.e. the intent was simply to delete
// the old cookie -- then we're done.
if (aCookie->Expiry() <= currentTime) {
COOKIE_LOGFAILURE(SET_COOKIE, aHostURI, aCookieHeader,
"previously stored cookie was deleted");
+ CookieLogging::LogMessageToConsole(
+ aCRC, aHostURI, nsIScriptError::warningFlag,
+ CONSOLE_REJECTION_CATEGORY, "CookieRejectedExpired"_ns,
+ AutoTArray<nsString, 1>{
+ NS_ConvertUTF8toUTF16(aCookie->Name()),
+ });
NotifyChanged(oldCookie, u"deleted", oldCookieIsSession);
return;
Run Code Online (Sandbox Code Playgroud)
然而,该消息似乎没有必要,并且有一个关于它的错误报告。该错误报告最近进行了更新,指出该问题已在Firefox 114中修复。
| 归档时间: |
|
| 查看次数: |
1270 次 |
| 最近记录: |