當(dāng)前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring上传时报Invalid CSRF Token错误解决方案
生活随笔
收集整理的這篇文章主要介紹了
Spring上传时报Invalid CSRF Token错误解决方案
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
概述
使用spring security之后,默認(rèn)上傳文件會報(bào)這個錯,解決方案有下面兩個:
解決方案一: 將 MultipartFilter 放在 springSecurityFilterChain 前面
修改web.xml文件:
<!-- 文件上傳過濾器,過濾上傳請求不經(jīng)過spring security --><filter><filter-name>MultipartFilter</filter-name><filter-class>org.springframework.web.multipart.support.MultipartFilter</filter-class></filter><filter-mapping><filter-name>MultipartFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- spring security 配置 --><filter><filter-name>springSecurityFilterChain</filter-name><filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class></filter><filter-mapping><filter-name>springSecurityFilterChain</filter-name><url-pattern>/*</url-pattern></filter-mapping>只要文件上傳過濾器放在spring security 的過濾器前就好了。
這樣配置之后,任何用戶都可以上傳臨時文件到服務(wù)器,但是,只有認(rèn)證用戶才可以提交表單。因?yàn)榕R時文件對服務(wù)器影響不大(除了大規(guī)模上傳),所以,這樣配置大多數(shù)情況下都是安全的。spring 官方也推薦這樣配置。
解決方案二:在form的action屬性里加上 CSRF token
修改上傳文件的form:
<form:form action="/fileupload?${_csrf.parameterName}=${_csrf.token}" method="post" commandName="goods" enctype="multipart/form-data">... </form:form>可見,上面就增加了${_csrf.parameterName}=${_csrf.token},但是這種方法會泄露參數(shù),因?yàn)檫@樣配置之后,上面這個參數(shù)直接就是可見的。更多信息參考:RFC 2616 Section 15.1.3 Encoding Sensitive Information in URI’s.
參考文檔
16.5.4 Multipart (file upload)
總結(jié)
以上是生活随笔為你收集整理的Spring上传时报Invalid CSRF Token错误解决方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Webpack不生成index.html
- 下一篇: 社区团购微信小程序开发