SpringSecurity解决POST方式下CSRF问题
作者:HuCheng1997
本文主要介绍了SpringSecurity解决POST方式下CSRF问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
问题现象: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}">
到此这篇关于SpringSecurity解决POST方式下CSRF问题的文章就介绍到这了,更多相关SpringSecurity POST CSRF 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!