即使在配置中启用 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。
嘿,我正在用 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。