簡體   English   中英

如何在Laravel 5.2中使用Ajax通過CSRF保護

[英]How to get through CSRF Protection with Ajax in Laravel 5.2

我想發送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 route.php文件中的路線:

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

這是我的控制台(jQuery問題):

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

這是我的網絡預覽:

TokenMismatchException in VerifyCsrfToken.php line 67:

有任何想法嗎 ?

嘗試像這樣在X-CSRF-TOKEN設置CSRF令牌,

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

並將以下代碼添加到您的app/Http/Middleware/VerifyCsrfToken.php ,向其添加tokenMatch()方法。

<?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;
    }

閱讀更多[VerifyCsrfToken]中的[Laravel5] TokenMismatchException

嘗試將令牌放入您的data

var token = "{{csrf_token()}}";
$.ajax({
   method: "POST",
    data: '{"value":"10", _token: token}', 
   dataType: 'json',
   url: "http://localhost/laravel/public/",
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM