我正在發送一個ajax post請求,並且通過爲Laravel創建post路徑來完成此操作。我已經設置好了,因此每個使用ajaxSetup的ajax請求都會在自動標題中放置一個csrf標記。我試圖在後端捕獲該頭並驗證令牌是否匹配。Laravel 5.4 null csrf_token()發佈到路由
在我的網絡的路由(自動使用Web中間件),這將返回預期:
Route::get('/test', function() {
return csrf_token();
});
然而,當我發佈到通過AJAX的路線,像任一下面的方法:
嘗試1:
Route::post('/test', '[email protected]');
在AjaxController構造,接着警報在視圖中:
var_dump(csrf_token().',hi'); die;
迴應:',嗨'(csrf_token爲空)。
嘗試2:
Route::post('/test', ['test' => csrf_token().',hi', 'uses' => '[email protected]']);
$test = $request->route()->getAction()['test'];
var_dump($test); die;
響應: '在'(csrf_token爲空)。
我似乎碰到的是,在請求csrf_token()被填充的情況下,在我的post請求中,它不是。
任何想法?
不確定如果你知道這一點,但在'app.js'和/或'layouts/app.blade.php'文件中應該有一個JS腳本,它將csrf_token添加到你的api請求標題中。如果沒有,我會調查,以確保它。避免需要檢索它,因爲你有效地做的是請求一個csrf並同時清除一個,因此csrf是無效的。如果有任何意義... – sourRaspberri
我已經更新我的問題更具體 –