Tyr*_*ter 5 php header csrf-protection laravel angularjs
我正在尝试获取标头值:
Request::header('csrf_token')
虽然,我的firebug在标题中说我将csrf_token设置为baMDpF0yrfRerkdihFack1Sa9cchUk8qBzm0hK0C.事实上,我可以csrf_token用本机的PHP代码来获取它:
getallheaders()['csrf_token']
现在问题是我正在进行XSRF保护吗?或者我的PHP代码有一个缺陷,我真的必须使用bug的laravel 4功能
Request::header('csrf_token')
它只返回空白.而我只是错过了一些东西.也许在我的Laravel 4配置等?
PS:我正在使用AngularJS,但也许我使用的客户端并不重要.我有这个链接作为我的指南:如何使用Laravel API在AngularJS表单中发送csrf_token()?
小智 8
我通过删除csrf_token中的下划线'_'解决了这个问题,所以它将是crsftoken.
Request::header('csrf_token'); // Not working
Request::header('csrftoken'); // Working!
Run Code Online (Sandbox Code Playgroud)
Request::header()确实用于检索headers,但是检查令牌的设置位置。CSRF 令牌应该由 Laravel 放入会话中,然后可以通过该方法访问它Session::token()。
如果您查看通过调用该类生成的 HTML Form::,您将看到一个名为 的隐藏元素_token,然后应将其与会话中的令牌进行比较。您可以使用 访问该变量Input::get('_token'),就像使用任何其他传入 GET 或 POST 变量一样。
...但是,所有这些实际上并不是必需的,因为它可以通过CSRF中的预定义过滤器轻松管理filters.php,只需将该过滤器添加到所需的路由或路由组,您就会受到保护,而无需获取进入它的细节。
| 归档时间: |
|
| 查看次数: |
10106 次 |
| 最近记录: |