SpringSecurity POST CSRF
HuCheng1997 人气:0问题现象:HTTP Status 403-Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'
原因:Spring Security为防止CSRF(Cross-site requetst forgery跨站请求伪造)的发生,限制了除了get以外的大多数方法。
解决方案
①(后端常用):
屏蔽CSRF控制,即Spring Security不再限制CSRF,进行配置:
@Override protected void configure(HttpSecurity http) throws Exception { //屏蔽CSRF控制 http.csrf().disable() ... }
解决方案②:
定义headers,post方式提交的时候带上headers的信息:
var headers = {}; headers['X-CSRF-TOKEN'] = "[[${_csrf.token}]]"; $.ajax({ url: url, type: "POST", headers: headers, dataType: "json", success: function(result) { } });
解决方案③:
直接作为参数提交:
$.ajax({ url: url, data: { "[[${_csrf.parameterName}]]": "[[${_csrf.token}]]" }, type: "POST", dataType: "json", success: function(result) { } });
解决方案④:
form表单提交的时候,作为隐藏参数提交
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}">
加载全部内容