http_only = false 时不在 document.cookie 列表中的 cookie
Posted
技术标签:
【中文标题】http_only = false 时不在 document.cookie 列表中的 cookie【英文标题】:A cookie not in document.cookie list while http_only = false 【发布时间】:2021-01-17 12:22:56 【问题描述】:我有一个 Nuxt.js 前端应用程序,它执行身份验证请求。后端有一个 Laravel/Sanctum 应用程序。它使用内置的基于 cookie 的会话身份验证。身份验证请求失败,因为 /login 请求中提供了 no X-XSRF-TOKEN HTTP 标头。任何人都可以帮助澄清为什么没有从后端提供的 cookie 创建标头吗?
注意:我的笔记本电脑上一切正常。仅在部署到测试环境(GCP VM 实例 + Gitlab 页面)时才会失败。
Nuxt.js 中的验证码:
this.$axios.defaults.withCredentials = true; await
this.$axios.get("/sanctum/csrf-cookie");
console.log(document.cookie);
await this.$axios.post("/login", credentials);
I can see that XSRF-TOKEN cookie is returned by server
I also see that the XSRF-TOKEN cookie is provided in the /login POST request, while no X-XSRF-TOKEN HTTP header is created
Cookie details
我还调试了 axios 源代码,并看到它尝试创建 X-XSRF-TOKEN 标头,并从 document.cookie 中获取 XSRF 令牌。但 document.cookie 在那一刻不包含令牌 cookie。为什么?
【问题讨论】:
【参考方案1】:我找到了原因。会话域不正确。我已经设置了 .my-domain.co.uk,现在可以使用了。
【讨论】:
以上是关于http_only = false 时不在 document.cookie 列表中的 cookie的主要内容,如果未能解决你的问题,请参考以下文章
initialValues仅在硬编码时预填充数据,但不在动态数据中预填充数据
ShowCursor(FALSE) 不在控制台应用程序上隐藏光标