Laravel 提供简易的方法,让您可以保护您的应用程序不受到 CSRF (跨网站请求伪造) 攻击。跨网站请求伪造是一种恶意的攻击,借以代表经过身份验证的用户执行未经授权的命令。
Laravel 会自动在每一位用户的 session 中放置随机的 token ,这个 token 将被用来确保经过验证的用户是实际发出请求至
1、插入 CSRF Token 到表单
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
当然也可以在 Blade 模板引擎这样写:
<input type="hidden" name="_token" value="{{ csrf_token() }}">
以上代码也可以使用以下代码代替:
{{csrf_field()}}
您不需要手动验证在 POST、PUT、DELETE 请求的 CSRF token。 VerifyCsrfToken HTTP 中间件将保存在 session 中的请求输入的 token 配对来验证 token 。
2、X-CSRF-TOKEN请求头
除了寻找 CSRF token 作为「POST」参数,中间件也检查 X-XSRF-TOKEN 请求头,比如,你可以把 token 存放在 meta 标签中, 然后使用 jQuery 将它加入到所有的请求头中:
<meta name="csrf-token" content="{{ csrf_token() }}" />
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
现在所有的 AJAX 请求会自动加入 CSRF token:
$.ajax({
url: "/foo/bar",
})
另外一种写法
$.ajax({
method:"post",
url: "your url",
data: {
"_token":"{{csrf_token()}}";,
"name":field,
"values":values,
"ids":ids
},
async:false,
success: function (data) {
if(data.status==true){
alert("success");
}else{
alert("fail"); }
}
});
最新回复