这是我的配置:
服务器
Laravel 8 应用程序使用 Sanctum 提供对 REST API 的访问。它被配置为运行在http://b8/
客户
一个单独的 Vue CLI 3.0 SPA,它使用基于会话的 cookie 身份验证方法连接到 API。我已将 Vue CLI Serve 配置为在http://app.b8/
.
问题
即使服务器和客户端在同一个域中,Chrome 也不允许 Set-Cookie 操作。翻阅了几篇帖子和文章后,我已经在Postman中成功运行了,但是在浏览器中运行的真正的Vue应用程序无法设置Sanctum cookie,因此无法登录。
这是我的配置:
.env
SESSION_DRIVER=cookie
SESSION_DOMAIN=.b8
SANCTUM_STATEFUL_DOMAINS=localhost,localhost:8080,127.0.0.1,127.0.0.1:8000,::1,b8,app.b8,app.b8:8080
vue.config.js
...
devServer: {
proxy: "http://b8/api/v1",
host: "app.b8"
},
Vue应用程序中的登录功能
async login(context, credentials) {
axios.get('http://b8/sanctum/csrf-cookie').then(response => {
axios.post('http://b8/login', credentials).then(response2 => {
//successfully logged in.
});
});
},
错误信息
路由的外部调用/sanctum/csrf-cookie
成功返回并带来 Sanctum cookie。但是,Chrome 认为 cookie 对当前域无效,因此没有设置它。这是 Sanctum 令牌调用返回后 Dev Tools 窗格的 Cookies 选项卡(显示 Chrome 投诉的工具提示):
由于未设置 cookie,因此以下login
调用失败并出现419
错误。
我在这里想念什么?