当前位置: 首页 > 知识库问答 >
问题:

SpringCORS误差

司徒经纶
2023-03-14

我正在用Spring构建WebApi,用ReactJS构建客户机。我试图执行一个POST请求,用OAuth2对WebApi进行身份验证,但我不断得到

WebSecurityConfigurerAdapter:

@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(false); //updated to false
        config.addAllowedOrigin("*");
        config.addAllowedHeader("*");
        config.addAllowedMethod("GET");
        config.addAllowedMethod("PUT");
        config.addAllowedMethod("POST");
        source.registerCorsConfiguration("/**", config);
        return new CorsFilter(source);
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .csrf().disable()
                .exceptionHandling()
                .authenticationEntryPoint((request, response, authException) -> response.sendError(HttpServletResponse.SC_UNAUTHORIZED))
                .and()
                .authorizeRequests()
                .antMatchers(HttpMethod.OPTIONS).permitAll()
                .antMatchers("/**").authenticated()
                .and()
                .httpBasic();
    }
}

我的要求是:

fetch( 
      this.getAuthEndpoint('password'), {
        method:'post',
      headers: {
        'Access-Control-Allow-Origin': '*', 
        'Authorization': 'Basic dG9ucjpzZWNyZXQ='
      },
      body: JSON.stringify({
        'password': credentials.password,
        'username': credentials.username,
        'grant_type': 'password',
        'scope': 'read write',
        'client_secret': Config.clientSecret,
        'client_id': Config.clientId
      })})
      .then(response => {
        this.saveTokens(response.data);

        return axios.get(Config.apiUrl + '/me');
      })
      .then(response => {
        this.loginSuccess(response.data.user);
      })
      .catch(response => {
        this.loginError(response);
      });

共有1个答案

胥良平
2023-03-14

尝试执行http.cors()..像

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.cors()....
}

参考https://spring.io/blog/2015/06/08/cors-support-in-spring-framework

这将添加一个CORS过滤器并立即返回,而不是将请求传递到安全过滤器中。

 类似资料:
  • (spring)SecurityConfig.java LoginController.java

  • 除了这一部分,我大部分都懂了: 我不知道这行是干什么的:

  • 完全错误: 原因:org.springframework.beans.factory.beanCreationException:无法自动执行字段:private com.flex.eventmanagement.handler.helper.messageformanagement.handler.helper.notificationpreprocessor.messageformathelp

  • 我在下面得到了三个多小时的例外。有人知道怎么摆脱它吗? javax。坚持不懈PersistenceException:Exception[EclipseLink-4002](Eclipse持久性服务-2.3.2.v20111125-r10461):org。日食坚持不懈例外。DatabaseException内部异常:java。sql。SQLException:暂时性错误,请重试。错误代码:1在组织

  • 误差线图通常表示数据的可变范围、误差范围。 图4-17 Highcharts 误差线图 误差线图相关的 API: 误差线数据列配置 误差线数据列 一、误差线相关配置 通过指定数据列的类型为 errorbar 即可创建误差线数据列。由于误差线是主数据列的附属数据列,是对主数据列进行补充说明,所有需要一个主数据列与其进行关联。 1、关联数据列 通过 linkedTo 可以指定误差线关联的数据列,lin

  • 几周前,我切换到Eclipse Oxygen,并开始出现如下错误。 project facet JST.AppClient的8.0版本不存在。 eclipse.buildid=4.7.1.m20171009-0410 java.version=1.8.0_144 java.vendor=Oracle Corporation BootLoader常量:OS=win32,arch=x86_64,ws=