【spring boot】ajax post提交遇到403
生活随笔
收集整理的這篇文章主要介紹了
【spring boot】ajax post提交遇到403
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 前言
- 處理思路
- 禁用csrf
- 配置中,加入排除csrf的地址
- 補全csrf
- form中補全csrf
- ajax的url中補全csrf
- AJAX請求發送前補全csrf:Ajax事件
前言
當滿足以下條件時,ajax post 提交遇到403錯誤應是缺少csrf。
- spring boot中使用了spring security。
- spring security對post請求會進行身份驗證。
- spring security默認開啟了Cross Site Request Forgery (CSRF)。
處理思路
1,可以禁用csrf。
2,配置中,加入排除csrf的地址。
3,補全csrf。(本次僅對此加以說明)
禁用csrf
略。
配置中,加入排除csrf的地址
略。
補全csrf
form中補全csrf
<input type="hidden" name="${_csrf.parameterName}"value="${_csrf.token}"/>ajax的url中補全csrf
themyleaf中寫法 ------------------------------- layedit.set({uploadImage: {url: '[(@{/cms/upload/photo})]?[(${_csrf.parameterName})]=[(${_csrf.token})]' //接口url,type: 'post' //默認post}});AJAX請求發送前補全csrf:Ajax事件
XMLHttpRequest對象和設置作為參數傳遞給回調函數
$(document).ajaxSend(function(evt,request,settings){})是全局事件,也就是說,
只要該頁面定義了這個函數,那么,在每個ajax請求前都會執行該函數
head中添加
<meta name="_csrf" th:content="${_csrf.token}"/> <meta name="_csrf_header" th:content="${_csrf.headerName}"/>js文件中添加
var token = $("meta[name='_csrf']").attr("content"); var header = $("meta[name='_csrf_header']").attr("content"); $(document).ajaxSend(function(e, xhr, options) {xhr.setRequestHeader(header, token); });總結
以上是生活随笔為你收集整理的【spring boot】ajax post提交遇到403的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 增加对股票的配置股份配置怎么合理
- 下一篇: Servlet获取URL地址