我使用Laravel作为REST API - 在另一个域上与SPA通信。
我需要帮助将CSRF令牌发送到我的应用程序。
我无法在隐藏字段内回显它,因为我的SPA位于另一个域中。
我可以将CSRF令牌放在Cookie中吗?
我该怎么做?
我可以通过get请求发送它 - 但我不确定它是否安全。
注意:为了更清楚,我正在考虑在我的第一个Get请求中将令牌发送到cookie中。
谢谢!
答案 0 :(得分:2)
只需使用功能csrf_token()
即可创建Cookie。
$tok = Cookie::make('token', csrf_token(), 30);
return Response::make('tadaaam')->withCookie($tok);
或者像这样使用它来追加视图。
$view = View::make('home');
$tok = Cookie::make('token', csrf_token(), 30);
return Response::make($view)->withCookie($tok);
要验证您应该添加新过滤器。
Route::filter('csrfcookie', function()
{
if (Session::token() != Cookie::get('token'))
{
throw new Illuminate\Session\TokenMismatchException;
}
});