drkrsx3135168
2016-08-23 07:45
浏览 55
已采纳

如何在Laravel 5.2中使用Ajax进行CSRF保护

I want to send a Ajax post request but i get some issues with CSRF.

Here is my js code :

 function sendAjaxRequest(index){
    var token = $('meta[name=csrf_token]').attr('content')
    $.ajaxSetup({ headers: { 'csrftoken' : token } });
    $.ajax({
       method: "POST",
        data: '{"value":"10"}', 
       dataType: 'json',
       url: "http://localhost/laravel/public/",
    });
 }

Here is my route from my laravel routes.php file :

Route::post('/','AjaxController@updateOrder');

Here is my console (jQuery issue) :

POST http://localhost/kaemo/public/ 500 (Internal Server Error)

Here is my network preview :

TokenMismatchException in VerifyCsrfToken.php line 67:

Any ideas ?

图片转代码服务由CSDN问答提供 功能建议

我想发送一个Ajax发布请求但是我遇到了CSRF的一些问题。

这是我的js代码:

  function sendAjaxRequest(index){
 var token = $('meta [name = csrf_token]')。attr('content  ')
 $ .ajaxSetup({headers:{'csrftoken':token}}); 
 $ .ajax({
 method:“POST”,
 data:'{“value”:“10”}  ',
 dataType:'json',
 url:“http:// localhost / laravel / public /”,
}); 
} 
   
 
 < 这是我的laravel routes.php文件的路由: 
 
 

Route :: post('/','AjaxController @ updateOrder');

这是我的控制台(jQuery问题):

  POST http:// localhost / kaemo / public / 500(内部服务器错误)\  n   
 
 

这是我的网络预览:

 在VerifyCsrfToken.php第67行中的TokenMismatchException:
    
 
 

有什么想法吗?

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • dongli8862 2016-08-23 08:01
    已采纳

    Try to set CSRF token in X-CSRF-TOKEN like,

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

    And add the below code in your app/Http/Middleware/VerifyCsrfToken.php, add the tokenMatch() method to this.

    <?php
        /**
         * Determine if the session and input CSRF tokens match.
         *
         * @param \Illuminate\Http\Request $request
         * @return bool
         */
        protected function tokensMatch($request)
        {
            // If request is an ajax request, then check to see if token matches token provider in
            // the header. This way, we can use CSRF protection in ajax requests also.
            $token = $request->ajax() ? $request->header('X-CSRF-Token') : $request->input('_token');
    
            return $request->session()->token() == $token;
        }
    

    Read more [Laravel5] TokenMismatchException in VerifyCsrfToken

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • dqd82461 2016-08-23 07:47

    Try putting the token into your data

    var token = "{{csrf_token()}}";
    $.ajax({
       method: "POST",
        data: '{"value":"10", _token: token}', 
       dataType: 'json',
       url: "http://localhost/laravel/public/",
    });
    
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题