我正在使用 Vue 开发一个新的前端来访问我现有的 Laravel 7 应用程序,该应用程序使用 Sanctum 进行身份验证。
前端位于 app.example.com,后端移至 api.example.com。CORS 中间件和 Sanctum 已正确配置为允许 app.example.com,到目前为止一切顺利。
GET/sanctum/csrf-cookie
看起来不错,但是,它似乎并没有真正设置 cookie,导致随后对 API 的请求返回 419。
const config = { withCredentials: true };
const api = process.env.NODE_ENV === 'production' ? 'https://api.example.com' : 'http://localhost:9000';
axios.get(api + '/sanctum/csrf-cookie', config)
.then(() => axios.post(api + '/login', data, config))
.then(response => response.json())
.then(response => { console.log('json', response); });
来自 /sanctum/csrf-cookie 的响应标头:
更新 1:之前没有注意到这一点;响应标题中每个旁边的警告图标Set-Cookie
显示“此 set-cookie 的域属性对于当前主机 url 无效。”