即使在配置中启用 Cors,它也会阻止我的请求

Cors blocks my request even after enabling it in config

嘿,我正在用 React 构建一个网站,我尝试从 spring 内置的后端服务器获取数据,但它不起作用。我将 CorsConfigurationSource 添加到我的安全配置中,但它仍然不起作用。 我的 cors 安全配置:

@Bean
CorsConfigurationSource corsConfigurationSource(){
     CorsConfiguration corsConfiguration=new CorsConfiguration();
     corsConfiguration.setAllowedOrigins(Arrays.asList("http://localhost:3000"));
     corsConfiguration.setAllowCredentials(true);
     corsConfiguration.setAllowedMethods(Arrays.asList("GET","POST"));
     UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
     source.registerCorsConfiguration("/**", corsConfiguration);
     return source;
}

我最终得到的错误:https://i.stack.imgur.com/olGCD.png\ 我的获取请求(我正在发布用户凭据):

fetch("http://localhost:8080/login", {
      method: "POST",
      mode:'cors',
      headers: {
        "Content-Type": "application/x-www-form-urlencoded"
      },
      body: new URLSearchParams(tempLoginCredentials),
    })

我认为您需要更多 headers 和 OPTIONS 方法。

config.setAllowedHeaders(Arrays.asList("Origin", "Content-Type", "Accept", "Authorization"));
config.setAllowedMethods(Arrays.asList("GET", "POST", "OPTIONS"));

Google Chrome 中的 CORS 在 localhost 上有点特殊。 阅读更多相关信息 here

最重要的是,PORT 在 CORS 中确实很重要。请注意,您在 Spring 配置中启用了端口 3000,但正在获取 8080。