【发布时间】:2020-05-02 17:27:03
【问题描述】:
我正在开发一个应用程序,它由一个使用 Spring Boot 开发的后端应用程序和一个使用 Angular 8 开发的前端应用程序组成。
现在我想启用 Cross Origin 让前端调用后端的 API。
继Spring documentation about CORS之后我写了如下配置类:
@EnableWebSecurity
public class WebConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.cors();
}
@Bean
CorsConfigurationSource corsConfigurationSource()
{
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(Arrays.asList("http://localhost:4200"));
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
}
第一次尝试是将 AllowedOrigins 设置为 Arrays.asList("*")。
当我从 Angular 应用程序调用 api /dinners/ingredients 时,我在控制台中发现以下错误:
访问 XMLHttpRequest 在 'http://localhost:8081/dinners/ingredients?page=0&pageSize=10' 来自 来源“http://localhost:4200”已被 CORS 策略阻止:否 'Access-Control-Allow-Origin' 标头出现在请求的 资源。
获取http://localhost:8081/dinners/ingredients?page=0&pageSize=10 网络::ERR_FAILED
我在后端应用程序的配置中遗漏了什么吗?我在 Postman 的标头响应中没有看到“Access-Control-Allow-Origin”标头:
【问题讨论】:
-
你能试试它是否适用于
configuration.applyPermitDefaultValues()吗? -
我试过了,同样的输出。
-
原来后端的上下文路径是
dinner而不是dinners.. 错误不是很明显。
标签: angular spring-boot spring-security cors