问题描述
我有一个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);
I can see that XSRF-TOKEN cookie is returned by server
我还调试了axios源代码,并看到它试图创建从document.cookie中获取XSRF令牌的X-XSRF-TOKEN标头。但是到那时,document.cookie还不包含令牌cookie。为什么?
解决方法
我找到了原因。会话域不正确。我已经设置了.my-domain.co.uk,它现在可以正常工作。