我最近迁移到Laravel 5,现在每个帖子提交都会进行CSRF检查.我想要删除它,但我想遵循最佳实践,所以我会保持这种方式.
另一方面,我提交ajax请求时出现问题..我的页面有多个表单,有些提交甚至不是来自表单,只是简单的ajax调用.我的想法是在页面上有一个隐藏的"令牌"输入并将其附加到每个提交.拥有通用单一令牌输入有任何缺点吗?
另外,我该如何输出令牌?在页脚上创建一个隐藏的输入是否可以?
luk*_*ter 28
我没有看到任何缺点.您可以在布局文件中轻松创建全局标记字段:
<input type="hidden" name="_token" id="csrf-token" value="{{ Session::token() }}" />
Run Code Online (Sandbox Code Playgroud)
或者,如果您使用表单构建器:
{!! Form::token() !!}
Run Code Online (Sandbox Code Playgroud)
在jQuery中,你可以使用类似这样的令牌附加到每个请求.
Ard*_*rda 25
有一个帮助器可以在表单中添加表单令牌.你可以使用
{!! csrf_field() !!}
Run Code Online (Sandbox Code Playgroud)
在表格内.它将添加隐藏的输入和令牌.
你可以在页面底部使用这样的东西:
$('form').append('{{csrf_field()}}');
Run Code Online (Sandbox Code Playgroud)
这将为您的所有内容添加隐藏的输入forms:
<input type="hidden" name="_token" value="yIcHUzipr2Y2McGE3EUk5JwLOPjxrC3yEBetRtlV">
Run Code Online (Sandbox Code Playgroud)
对于你所有的AJAX请求:
$.ajaxSetup({
beforeSend: function (xhr, settings) {
//////////// Only for your domain
if (settings.url.indexOf(document.domain) >= 0) {
xhr.setRequestHeader("X-CSRF-Token", "{{csrf_token()}}");
}
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
79605 次 |
| 最近记录: |