我有一个带有santum实现的基本laravel/vue。问题是直接的:
我正在发送一个令牌请求并登录用户。服务器发回一个新的令牌。Axios添加了此令牌,但添加了另一个始终相同且已过期的令牌。
代码:
await APIClient.get("/sanctum/csrf-cookie")
return APIClient.post("/api/user/login", payload);
DevTools/Network选项卡:
- csrf cookie请求=>
response-headers
具有有效的XSRF-TOKEN
- 登录请求=>
request-headers
、SET-COOKIE
属性具有XSRF-TOKEN
(旧过期值(;
laravel_session
;
XSRF-TOKEN
(新有效值(
我的问题是旧值。在我的代码中根本没有添加这个的位置。
这是我的axios客户端
const APIClient = axios.create({
baseURL: constants.PATHS.url,
withCredentials: true, // required to handle the CSRF token
});
非常感谢你的帮助。
对不起,我不太理解你的问题,你不知道如何在axios的头中添加(旧的过期值(或(新的有效值(吗?我建议使用axios作为窗口的属性。更容易更改其属性:
window.axios.defaults.headers.common['token'] = "aaa"; //add a header
我找到了一个实际的解决方案。无论何时注销,您都应该清除文档的cookie,这样,令牌将始终是新的,旧的令牌不能重复。我见过这种错误在某些情况下发生。