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 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
springboot 加载 META-INF/spring.factories方式
这篇文章主要介绍了springboot 加载 META-INF/spring.factories方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-10-10java中synchronized(同步代码块和同步方法)详解及区别
这篇文章主要介绍了 java中synchronized(同步代码块和同步方法)详解及区别的相关资料,需要的朋友可以参考下2017-02-02SpringBoot如何设置404、500返回统一格式json
这篇文章主要介绍了SpringBoot如何设置404、500返回统一格式json问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-08-08
最新评论