首页 > 解决方案 > Axios 0.19.2 不发送 CSRF 令牌

问题描述

我的 Laravel 应用程序有问题,在将本地更改推送到 master 分支,然后从 Linux 服务器中提取 master 之后,每当我执行 axios 请求时,我都会得到一个 CSRF 令牌不匹配。

此问题在使用 PHP artisan serve 的本地环境中不存在,但 Linux 服务器使用 apache2。

我尝试过清除 cookie,我尝试过隐身窗口我在另一台计算机上尝试过,我已经将 axios 更新到 0.19.2 我已经清除了所有缺少依赖项的错误,但我无法摆脱这个错误。

当我检查网络选项卡时,我看到请求标头不包含 XSRF-thing-a-ma-jig 并且据我所知 axios 自动包含它。此外,在本地环境中,它被包含并可见。

这是我提出 axios 请求的方式

                    axios.delete(`/${objectType.toLowerCase()}/${objectId}`)
                    .then((returnData) => {
                        this.getPosts(); // to be replaced
                    })
                    .catch(function (error) {
                        console.log(error);
                    });

这是 bootstrap.js 中 axios 的两行

window.axios = require('axios');

window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';

显然,我在页面头部有 csrf_token 元标记。

我不知所措,我无法从 git 测试旧版本,因为它会引发 500 服务器错误,我想我在某处破坏了一些东西,但同一个主分支正在本地环境中工作,所以它应该可以在Linux服务器...

我需要帮助 !

更新:我想我找到了一个可能的原因,cookie 选项卡一直显示相同的 XSRF-Token,即使在多次删除浏览器中的 cookie 之后,也在其他计算机上也是如此。这可能是什么原因?

标签: laravelaxioscsrf-token

解决方案


推荐阅读