Spring Security 本是防CSRF攻击
HTML:
head标签中添加:
<meta name="_csrf" th:content="${_csrf.token}"/>
<meta name="_csrf_header" th:content="${_csrf.headerName}"/>
js中:
var header = $("meta[name='_csrf_header']").attr("content");
var token = $("meta[name='_csrf']").attr("content");
Ajax其它正常使用,多加一个:
beforeSend: function (xhr) {
xhr.setRequestHeader(header, token);
}
例如:
$.ajax({
type: "POST", //通过POST方式上传请求
contentType: "application/json;charset=utf-8",
data: JSON.stringify(apdata), //上传的参数
dataType: 'json',
url: "/user/login", //请求的url。与后端@Request Mapping注解中的值一致。
beforeSend: function (xhr) {
xhr.setRequestHeader(header, token);
},
success: function (data) { //请求成功的回调函数
if (data.flag == "success") {
/*icon四种设置:"error"、"info"、"question"、"warning"*/
$.messager.alert("操作结果", data.msg);
} else if (data.flag == "fail" || data.flag == "error") {
$.messager.alert("操作结果", data.msg);
}
}
});
如果是JSP则:
<meta name="_csrf" content=${_csrf.token}/>
<meta name="_csrf_header" content=${_csrf.headerName}/>
其它相同