如何在Laravel中使用AJAX请求中的默认csrf令牌

时间:2019-05-31 00:33:12

标签: laravel vue.js axios

我正在使用Vuejs,我想向laravel服务器发出一个安全的AJAX请求(使用axios),但是我认为CSRF保护无效,因为我更改了前端部分的令牌,即使这样我也可以与数据库交互。

我了解到Laravel带有一个名为[bootstrap.js](https://laravel.com/docs/5.8/csrf#csrf-introduction)的文件,假定该文件默认情况下执行此任务,但对我而言不起作用。我认为这是因为当我运行npm run watch时webpack不会加载文件,但是我不知道如何加载它,

我搜索了答案,但只找到了Bootstrap教程:/

3 个答案:

答案 0 :(得分:0)

您可以将CSRF作为_token放在meta中。像这样:

<meta name="csrf-token" content="{{ csrf_token() }}">

请访问laravel文档。 https://laravel.com/docs/5.6/csrf#csrf-x-csrf-token

然后在您的JavaScript中访问它。

答案 1 :(得分:0)

您应该为API组添加VerifyCsrfToken中间件 (app / Http / Kernel.php)

答案 2 :(得分:0)

在头上

<meta name="csrf-token" content="{{ csrf_token() }}">

在ajax中:

window.axios = require('axios');

window.axios.defaults.headers.common = {
    'X-CSRF-TOKEN' : document.querySelector('meta[name="csrf-token"]').getAttribute('content');
};