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) 不在控制台应用程序上隐藏光标

如果特定字符串不在文本文件中,则返回 False

我希望 useEffect 仅在道具更改时运行。不在初始运行[重复]

迭代对象数组时返回 false 或 true [重复]