背景是項目中使用Spring Security 進行安全控制 ajax
再使用Ajax的時候會報 403(ajax get 方式是沒問題的 post 的時候會報)json
Spring Security 本來是 防止 CSRF 攻擊 如今 ajax 被誤傷了...
安全
而後下面貼解決方法,頁面的head標籤裏 下記追加app
(這裏要說的是用的是thymeleaf模板 全部纔會有 th:若是是jsp的話使用EL表達式吧th:去掉就能用了)jsp
<meta name="_csrf" th:content="${_csrf.token}"/>
<meta name="_csrf_header" th:content="${_csrf.headerName}"/>
而後用js取值async
var header = $("meta[name='_csrf_header']").attr("content"); var token =$("meta[name='_csrf']").attr("content");
ajax中調用使用,其餘和一般同樣 beforeSend 裏寫下以下就能夠了post
$.ajax({ url : "", type : "POST", data : "", contentType : 'application/json;charset=utf-8', //async : false,
beforeSend : function(xhr) { xhr.setRequestHeader(header, token); }, success : function(resdata) {}, error : function(xhr, ajaxOptions, throwError) { } });