以下配置基於spring boot版本1.4.2.RELEASE,默認引入的spring security版本爲4.1.3.RELEASE,頁面模板採用thymeleaf。
問題現象:HTTP Status 403-Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.
關於CSRF的描述,此處不再贅述,解決方案如下。
第1、2、3種方案測試通過,第四種方式未做測試。
1.定義headers,post方式提交的時候帶上headers的信息。
var headers = {};
headers['X-CSRF-TOKEN'] = "[[${_csrf.token}]]";
$.ajax({
url: url,
type: "POST",
headers: headers,
dataType: "json",
success: function(result) {
}
});
2.直接作爲參數提交。
$.ajax({
url: url,
data: {
"[[${_csrf.parameterName}]]": "[[${_csrf.token}]]"
},
type: "POST",
dataType: "json",
success: function(result) {
}
});
3.form提交的時候,如果出現csrf問題,可將該參數作爲隱藏項。跟第二種方式類似。
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}">
4.在 @EnableWebSecurity配置中,禁用CSRF。
http.csrf().disable();
作者:吳俊達
鏈接:https://www.jianshu.com/p/9a7b8b441b24
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。