2016-06-11 110 views
2

這是如何解釋的?TokenMismatchException ajax請求上的RANDOM Laravel

  1. 乾淨安裝Laravel
  2. 使用Redis的會話和緩存
  3. 的問題,如果我在Windows上啓動服務器時,只顯示在Chrome纔會發生。
  4. 使用了Ajax調用一個簡單的js函數:

    $.ajaxSetup({ 
        headers: { 
         'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
        }, 
        data: { 
         _token: $('meta[name="csrf-token"]').attr('content') 
        } 
    }); 
    
    for(var i = 0; i < 5; i++){ 
    
        getUsers(); 
    } 
    
    function getUsers() { 
        $.ajax({ 
         url: '/users', 
         type: 'POST', 
         success: function(data) { 
          console.log(data); 
         } 
        }); 
    } 
    
  5. 在元<meta name="csrf-token" content="{{ csrf_token() }}" />

  6. 設置CSRF返回了數據的JSON:

    公共功能的用戶(){

    $users = User::all(); 
    
    return response()->json([ 
        'users' => $users, 
    ]); 
    

    }

  7. 在視頻的最後,您可以看到RANDOM TokenMismatchException,即使令牌永遠不會改變,但有時會發生錯誤。

https://www.youtube.com/watch?v=QDucHoP647g

我知道這個問題已經從討論多年,但爲什麼不存在一個解決方案?

我也發佈在laravel github上,但沒有解決方案沒有解決我的問題。

回答

0

爲什麼你發送令牌兩次?從$.ajaxSetup()刪除該數據部分

爲什麼使用POST獲取用戶?改用GET。

+0

這是一個例子。假設我將在該POST /用戶上插入一個插入。錯誤將會發生。從我的測試中我發現TokenMismatchException的問題只有在我點擊記住我時纔會發生。 (我刪除了一個令牌併發送一次)。 –

+0

這實際上不是對作者問題的回答。 – antongorodezkiy