相关疑难解决方法(0)

Laravel 5 CSRF全局令牌隐藏字段,用于页面中的所有表单

我最近迁移到Laravel 5,现在每个帖子提交都会进行CSRF检查.我想要删除它,但我想遵循最佳实践,所以我会保持这种方式.

另一方面,我提交ajax请求时出现问题..我的页面有多个表单,有些提交甚至不是来自表单,只是简单的ajax调用.我的想法是在页面上有一个隐藏的"令牌"输入并将其附加到每个提交.拥有通用单一令牌输入有任何缺点吗?

另外,我该如何输出令牌?在页脚上创建一个隐藏的输入是否可以?

php csrf laravel

26
推荐指数
3
解决办法
8万
查看次数

jQuery将CSRF令牌添加到所有$ .post()请求的数据中

我正在开发一个Laravel 5应用程序,该应用程序默认为所有POST请求启用CSRF保护.我喜欢这个增加的安全性所以我正在尝试使用它.

在发出简单$.post()请求时,我收到'Illuminate\Session\TokenMismatchException'错误,因为_tokenPOST数据中缺少所需的表单输入.以下是有问题的$ .post请求的示例:

var userID = $("#userID").val();
$.post('/admin/users/delete-user', {id:userID}, function() {
// User deleted
});
Run Code Online (Sandbox Code Playgroud)

我将CSRF令牌存储为标题中的元字段,可以使用以下方法轻松访问它:

var csrf_token = $('meta[name="csrf-token"]').attr('content');
Run Code Online (Sandbox Code Playgroud)

是否可以将此附加到所有传出$.post()请求的json数据?我尝试使用标题,但Laravel似乎没有认出它们 -

var csrf_token = $('meta[name="csrf-token"]').attr('content');
alert(csrf_token);
$.ajaxPrefilter(function(options, originalOptions, jqXHR){
    if (options['type'].toLowerCase() === "post") {
        jqXHR.setRequestHeader('X-CSRFToken', csrf_token);
    }
});
Run Code Online (Sandbox Code Playgroud)

ajax jquery jquery-post laravel laravel-5

25
推荐指数
4
解决办法
6万
查看次数

标签 统计

laravel ×2

ajax ×1

csrf ×1

jquery ×1

jquery-post ×1

laravel-5 ×1

php ×1