Angular 调用 Eureka API 时出现 CORS 来源错误
Posted
技术标签:
【中文标题】Angular 调用 Eureka API 时出现 CORS 来源错误【英文标题】:CORS origin error in Angular while calling Eureka API 【发布时间】:2021-08-30 14:03:21 【问题描述】:我有 Java Spring Boot 应用程序,其中包含 Eureka 服务器应用程序(Java 项目)和其他 Eureka 客户端应用程序(Java 项目)。在 Eureka Server Application 项目中,我有一些通过我自己的 Controller 类公开的 Rest API,并且在 Spring Boot Application 中配置 CORS 设置后,这些 API(localhost:8100/someApi)可以从 Angular(localhost:4200)访问而没有任何问题。
但是由于 CORS 错误,我的 Java 应用程序的库类中的一些 Rest API 无法从 Angular 访问。但是可以访问其他在我创建的 Controller 类中定义的 Rest API。
这些是我尝试访问的 API。 https://github.com/Netflix/eureka/wiki/Eureka-REST-operations
这些 API 在库代码中,如果我们在 pom.ml 中提及依赖项,就会添加这些 API。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
我在尝试从 Angular 访问这些 Eureka API 时遇到 CORS 阻止错误,但通过 Postman 可以正常工作。请帮忙。
【问题讨论】:
【参考方案1】:您是否在 SpringBoot 应用程序中实现了跨源功能。 您可以通过默认添加 @CrossOrgina 注释在控制器级别启用 corss 源吗?它将允许所有源,包括所有 http 方法,或者可以添加自定义的全局配置,如下所示。
@Bean
Public WebMvcConfigurer corsConfigurer()
return new WebMvcConfigurer()
@Override
public void addCorsMapping(CoreRegistry registry)
registry.addMapping("/**").allowdOrgin("*");
【讨论】:
是的,我已经完成了这个全局配置,这就是我在 Controller 类中创建的 API 没有出现 CORS 的原因。但是对于库文件(Maven 依赖项)中的 Eureka API,由于 CORS 问题,Angular 无法正常工作。 您是否从角度侧添加了 cros Enble。 我想从服务器端而不是客户端来做。以上是关于Angular 调用 Eureka API 时出现 CORS 来源错误的主要内容,如果未能解决你的问题,请参考以下文章
从 Angular 客户端调用 API 时出现身份服务器 CORS 错误
从 Ajax 调用 Spring Boot Rest API 时出现 CORS 错误