我正在发送一个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
我已经更新我的问题更具体 –