位置重新加载时 CSRF 令牌未刷新

CSRF token not getting refreshed on location reload

我有一些 js 代码在按下按钮时发送 axios 删除请求,然后通过 window.location.reload(true) 刷新页面但是如果我尝试按下执行 axios 删除请求的按钮在同一页面的不同部分,我收到 419 错误,提示 CSRF 令牌未在页面刷新时重新加载。如果我在它工作后手动刷新页面。

我也试过做一个简单的window.location.href = '/previousurl,但也没用

CSRF 令牌和 JavaScript(来自 laravel 文档)

构建 JavaScript 驱动的应用程序时,让您的 JavaScript HTTP 库自动将 CSRF 令牌附加到每个传出请求会很方便。默认情况下,resources/js/bootstrap.js 文件中提供的 Axios HTTP 库会使用加密的 XSRF-TOKEN cookie 的值自动发送 X-XSRF-TOKEN header。如果您不使用此库,则需要为您的应用程序手动配置此行为。

有关详细信息,请参阅 https://laravel.com/docs/8.x/csrf

通过将以下内容添加到我的 bootstrap.js 文件中解决了这个问题

let token = document.head.querySelector('meta[name="csrf-token"]');

if (token) {
    window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;
}