如何在 Laravel 中使用 jQuery ajax 请求自动添加 X-CSRF-TOKEN

Posted

技术标签:

【中文标题】如何在 Laravel 中使用 jQuery ajax 请求自动添加 X-CSRF-TOKEN【英文标题】:How to automatically add X-CSRF-TOKEN with jQuery ajax request in Laravel 【发布时间】:2019-05-10 03:05:41 【问题描述】:

如何在我的 Laravel 应用程序的 ajax 请求(GET 或 POST)中自动添加 csrf 令牌,而无需手动将其添加到每个请求中。

我的 ajax 请求

   $.ajax(
      type:'post',
      url: "/email/unique",
      data:  "_token": " csrf_token() ", "email": email 
      success: function(data) 
        console.log(data);
      
   );

【问题讨论】:

【参考方案1】:

在 Laravel 中,csrf-token 元标记 的值默认注册在 Axios HTTP 库中。但如果您不使用此库,则需要为您的应用手动配置此行为。

为此,请将令牌存储在 html 元标记中

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

然后,一旦您创建了元标记,您就可以指示 jQuery 库自动将令牌添加到所有请求标头中。

为此,将代码添加到 resources/js/bootstrap.js 文件中以获取 Laravel 5.7resources/assets/js/bootstrap.js 以获取 Laravel 5.6 及以下版本。

$.ajaxSetup(
    headers: 
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    
);

没有 csrf 令牌的 Ajax,因为它会自动添加

$.ajax(
      type:'post',
      url: "/email/unique",
      data:  "email": email 
      success: function(data) 
        console.log(data);
    
 ); 

【讨论】:

以上是关于如何在 Laravel 中使用 jQuery ajax 请求自动添加 X-CSRF-TOKEN的主要内容,如果未能解决你的问题,请参考以下文章

如何在laravel中使用json将json数组打印到jquery表?

如何在laravel中使用jquery将行添加到数据表中

如何在 laravel 中使用 jquery 自动填写 PayPal Guest Checkout 表单

如何使用 laravel 在 jquery fullcalendar 中存储拖动的事件

如何使用 jQuery-Tabledit 和 Laravel 更新表格行

如何在 Laravel Blade 上使用 jquery 元素