Spring Security Ajax 被拦截

Posted 怪蜀黍

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Security Ajax 被拦截相关的知识,希望对你有一定的参考价值。

背景是项目中使用Spring Security 进行安全控制

再使用Ajax的时候会报 403(ajax get  方式是没问题的 post 的时候会报)

Spring Security 原本是 防止 CSRF 攻击 现在 ajax 被误伤了...

然后下面贴解决方法,页面的head标签里 下记追加

(这里要说的是用的是thymeleaf模板 所有才会有 th:如果是jsp的话使用EL表达式吧th:去掉就能用了)

<meta name="_csrf" th:content="${_csrf.token}"/>
<meta name="_csrf_header"  th:content="${_csrf.headerName}"/>

然后用js取值

var header = $("meta[name=‘_csrf_header‘]").attr("content");
var token =$("meta[name=‘_csrf‘]").attr("content");

ajax中调用使用,其他和通常一样 beforeSend 里写下如下就可以了

        $.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) { }
       });

以上是关于Spring Security Ajax 被拦截的主要内容,如果未能解决你的问题,请参考以下文章

spring security 单一账户多地方登陆提醒, ajax 拦截器 Interceptor

Spring Security拦截后恢复用户名

Spring Security4.1.3实现拦截登录后向登录页面跳转方式(redirect或forward)返回被拦截界面

Spring Security4.1.3实现拦截登录后向登录页面跳转方式(redirect或forward)返回被拦截界面

ajax请求在spring security中被拒绝,Grails

Spring Security 入门(1-9)Spring Security - 拦截 url