【发布时间】:2015-02-02 22:11:54
【问题描述】:
好的,已经搜索了几个小时,但找不到解决方案的开始。
我正在使用带有 laravel 后端的 angularJS 前端。 Restangular 是我的通讯服务。
我的 POST 很好,因为我可以在数据中包含 _token 并且它会起作用。
但是对于 Restangular 调用破坏函数,它看起来像......
Restangular.all('auth/logout').remove(); //maps to AuthController@Destroy
一切都好,但是你会得到一个 TOKENMISMATCH 异常,这是一个很好的安全问题
由于我找不到将 _token 包含到删除中的方法,因为它本质上是无正文的,所以我决定将令牌放在标题中。
RestangularProvider.setDefaultHeaders({'X-XSRF-TOKEN': CSRF_TOKEN}); //CSRF_TOKEN gathered elsewhere
在 Chrome dev tolos 中,我可以看到标题设置为
X-XSRF-TOKEN:ClkQIRLpFQgMg8ZT6X5CF6doCplRfdJzW8msx2JI
X-XSRF-TOKEN 正是VerifyCrsfToken.php 正在寻找的。然而,它吐出一个解密错误。任何其他令牌名称,例如 XSRF-TOKEN、_TOKEN、CSRF_TOKEN 都会吐出令牌不匹配。
由于最后一个事实,似乎标头已正确声明,但我无法理解的某些事情导致 Laravel 解密失败。而且我已经密切关注解密功能,但不明白为什么它会失败......
感谢您的帮助。
【问题讨论】:
-
你试过
'X-CSRF-TOKEN': CSRF_TOKEN吗?
标签: angularjs laravel csrf restangular