CSRF ajax 的一些设置

    spring security 4.x 之后默认开启csrf保护,因此 POST, PUT or DELETE 等基本请求都要求附带服务器端的令牌请求才会被服务器接受,因此,如果你的POST, PUT or DELETE 等请求如果没有携带服务器令牌,你将会得到一个403错误"Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'."。
下面是解决方法:
在jsp头文件添加如下代码
<head>
    <sec:csrfMetaTags/>
</head>
jsp编译之后的页面:
 <head>
    <meta name="_csrf_parameter" content="_csrf" />
    <meta name="_csrf_header" content="X-CSRF-TOKEN" />
    <meta name="_csrf" content="e62835df-f1a0-49ea-bce7-bf96f998119c" />
</head>
另外,ajax 的post请求也必须在请求头中手动添加参数:
var header = $("meta[name='_csrf_header']").attr("content");
var token = $("meta[name='_csrf']").attr("content");
$.ajax({
url: '/test',
type: 'POST',
beforeSend: function(xhr){
    xhr.setRequestHeader(header, token);
},
success: function(data) {
    console.log(data);
},
error: function (xhr, ajaxOptions, thrownError) {
    console.log(xhr.status + ": " + thrownError);
}

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值