集成Spring Security后发送post请求403错误,get请求通过

集成Spring Security后发送post请求403错误,get请求通过

前提

是建立在后端已经做了跨域处理的前提下

处理跨域问题

最近在做springcloud项目中集成avtiviti工作流模块,工作流需要依赖 activiti-spring-boot-starter,此依赖中自带了spring security starter的依赖,因此出现里跨域的问题。
  1. 配置SecurityConfig ,解决跨域;
  2. 代码粘贴如下;
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

 
    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();

        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOriginPattern("*");
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.setAllowCredentials(true);

        source.registerCorsConfiguration("/**", corsConfiguration);
        return new CorsFilter(source);
    }
}
  1. 此时get请求可以正常访问。

403 Forbidden

发现在post,delete..等请求方式中出现403拒绝访问的问题

查阅资料
基于spring security,为了防止跨站提交攻击,通常会启用csrf,所有http请求都被会CsrfFilter拦截,而CsrfFilter中有一个私有类DefaultRequiresCsrfMatcher,POST方法被排除在外了,也就是说只有GET|HEAD|TRACE|OPTIONS这4类方法会被放行。

参考资料:
Spring Security笔记:解决CsrfFilter与Rest服务Post方式的矛盾

解决方法 禁用csrf拦截

//同样在SecurityConfig配置中
@Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable() // 解决POST请求403错误
                .authorizeRequests()
                .anyRequest().permitAll(); // 允许
    }

: 如有其他解决方法,欢迎各位大神指点!!万分感谢!

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值