springboot 使用 SprignSecurity 后无法 POST 提交数据

问题描述

在 Springboot 中使用 SpringSecurity 后会出现使用 POST 无法提交请求的问题,原因是因为 SpringSecurity 为了防止跨域请求伪造,于是拦截了 POST 请求,而使用 GET 请求则不会出现这种问题。于是百度了一下,总结出如下办法解决 POST 无法提交的问题

解决办法

1). 如果是使用表单提交,在表单中添加隐藏域即可。

<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>  

2). 如果是使用Ajax提交。
html 页面

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

ajax 的 js 中添加如下代码

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

3). 直接关闭防跨域攻击功能。(该方法暴力不推荐使用)

@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
                http.csrf().disable();
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值