1
我有一个应用程序使用角度js向服务器发出$ http GET请求。一个页面特别具有一种形式,得到嵌入到它CSRF令牌如下Laravel csrf标记不匹配ajax GET请求
<input type="hidden" ng-model="token" value="{{{ Session::getToken() }}}">
在我的控制,我有以下代码:
public function getMethod($arg, $token)
{
/*Check for csrf token validity*/
if ($token != Session::token()) {
return Response::json(
array(),
403
);
}
........
}
从客户端我作出这样的要求:
var arg = $scope.arg;
var get_url = '/url/routing/to/controller/arg/' + arg + '/' + $scope.token;
$http({method: 'GET', url: get_url})
.success(function(data, status, headers, config) {
//Do stuff after success
.............
})
.error(function(data, status, headers, config) {
//Handle error
.......
});
我不完全知道如何GET请求可以用CSRF令牌被整合,但是当我做一个GET请求注册的URL,我得到令牌不匹配。基本上每次向服务器发送一个ajax请求时都会生成一个新的标记,因此当我在控制器中比较它时,输入表单中提取的初始标记不匹配。任何人都可以告诉我在这种情况下csrf的有效性如何?
感谢
嗨,那么这是否意味着我只能将csrf标记嵌入到post请求中(或除GET以外的任何其他东西)?我的表单基本上是为了在数据库中创建一个对象。用户不会登录。 – 2014-09-10 21:57:13
如果任何人*可以创建资源,那么保护它免受CSRF影响并不大。 – 2014-09-10 22:18:52
好吧,我正在尝试发出POST请求,并在Laravel中收到令牌不匹配错误。你知道为什么会这样吗? – 2014-09-23 22:09:55