0

我有一个 Nuxt.js 前端应用程序,它执行身份验证请求。后端有一个 Laravel/Sanctum 应用程序。它使用内置的基于 cookie 的会话身份验证。身份验证请求失败,因为/login 请求中提供 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);

我可以看到 XSRF-TOKEN cookie 是由服务器返回的

我还看到 /login POST 请求中提供了 XSRF-TOKEN cookie,而没有创建 X-XSRF-TOKEN HTTP 标头

Cookie 详细信息

我还调试了 axios 源代码,看到它尝试创建 X-XSRF-TOKEN 标头,从 document.cookie 中获取 XSRF 令牌。但 document.cookie 在那一刻不包含令牌 cookie。为什么?

4

1 回答 1

0

我找到了原因。会话域不正确。我已经设置了 .my-domain.co.uk 并且现在可以使用了。

于 2020-10-02T12:42:11.973 回答