java - Angular 7 和 Spring Boot 应用程序 - 请求的资源上不存在“Access-Control-Allow-Origin”标头
问题描述
我在 Spring Boot 应用程序的控制器中添加@CrossOrigin(origins = "*")
了类级别的注释,当我从 Angular 向 Spring Boot 应用程序发出 HTTP GET 请求(侦听端口 9000)时,我仍然收到此错误。这是我从 Chrome 得到的错误。
从源“ http://localhost:4200 ”访问“ http://localhost:9000/employee/all ”处的 XMLHttpRequest已被 CORS 策略阻止:没有“Access-Control-Allow-Origin”标头出现在请求的资源。
解决方案
我发现@CrossOrigin
非常挑剔。您可以尝试按照Alexander的建议@CrossOrigin
不使用任何参数。
您还可以尝试将自定义CorsFilter
Bean 添加到您调用的类中SpringApplication.run()
。这样,您基本上可以完全控制过滤器,并且可以在必要时添加/删除方法。
像这样的东西:
@Bean
public CorsFilter corsFilter() {
final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
final CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.setAllowedOrigins(Collections.singletonList("*"));
config.setAllowedHeaders(Arrays.asList("Origin", "Content-Type", "Accept"));
config.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE", "OPTIONS"));
source.registerCorsConfiguration("/**", config);
return new CorsFilter(source);
}
推荐阅读
- angular - 角度不同的路线相同的组件
- android - 在 Kotlin 中制作功能块
- ruby-on-rails - Rails:从选定国家/地区获取数据状态的城邦 gem“f.select”问题
- accessibility - “Inspect.exe”在我的笔记本电脑上找不到某些元素,为什么?
- c# - Rabbit MQ 在 Ack 后多次拉取消息
- mysql - 我更改了phpmyadmin mysql端口号,现在无法登录
- reactjs - React-Bootstrap Dropdownbutton 无法正确呈现
- php - 使用 CURL 循环的问题请求超时
- javascript - 变量 undefined 和 onclick/onkeydown 事件一起工作
- java - MAVEN 上的 Java BOT(带有 JDA 库)在 Heroku 上运行