spring security oauth2 options 请求返回 401

使用浏览器跨域访问spring security api时,会先发起 options的请求,但是该请求会直接被security 拦截,因为options请求没有携带token,所以直接返回401,就不会在发起get或post请求了。

解决方案:

1、配置HttpSecurity不校验:antMatchers(HttpMethod.OPTIONS).permitAll()

    @Override
    public void configure(HttpSecurity http) throws Exception {
    	http
		.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
		.and().authorizeRequests()
		.antMatchers(HttpMethod.OPTIONS).permitAll() // 对option不校验
		.anyRequest().authenticated();
    }

2、如果使用的使用ZuulFilter解决跨域问题,可以提高该filter的order。

发表评论