在Docker中部署Spring Boot和Angular应用程序时出现CORS错误

在Docker中部署Spring Boot和Angular应用程序时出现CORS错误,angular,spring,spring-boot,docker,cors,Angular,Spring,Spring Boot,Docker,Cors,我已经部署了3个docker容器——用于数据库、后端(Spring boot)和前端(Angular)。然而,当我访问该网站(Google Cloud VM)时,我收到了所有后端请求的CORS错误。后端在8080上运行 当我访问IP:80时,我得到了CORS 为什么会这样?解决办法是什么 以下是我在控制器中使用CrossOrigin的方式 @CrossOrigin("*") @RestController @RequestMapping("/api") public class Customer

我已经部署了3个docker容器——用于数据库、后端(Spring boot)和前端(Angular)。然而,当我访问该网站(Google Cloud VM)时,我收到了所有后端请求的CORS错误。后端在8080上运行

当我访问IP:80时,我得到了CORS

为什么会这样?解决办法是什么

以下是我在控制器中使用CrossOrigin的方式

@CrossOrigin("*")
@RestController
@RequestMapping("/api")
public class CustomerController {

非常感谢您的帮助。

@Cross:将应用于单个页面。它将不适用于整个应用程序,因此我建议您遵循以下类似场景链接中定义的方法:。在这里,您可以为整个应用程序定义过滤器,并对CORS的配置进行更多控制

而且,如果你的应用程序集成了Spring security,那么你需要处理更多的配置更改才能使其正常工作


希望这是有帮助的

不允许从脚本中调用URL,这些脚本在呈现页面的同一域中找不到:

出于安全原因,浏览器限制从脚本启动的跨源HTTP请求。例如,XMLHttpRequest和FetchAPI遵循相同的源策略。这意味着使用这些API的web应用程序只能从加载应用程序的同一来源请求资源,除非来自其他来源的响应包含正确的CORS头

资料来源:

实际上,您有3种选择:

  • 将8080端口(Spring Boots Tomcat服务器的端口)添加到异常中(请参阅:)
  • 使用像nginx这样的反向代理,将请求路由到API,或根据请求提供角度资源
  • 从您的Spring Boot应用程序提供Angualr资源

  • 你能提到错误日志吗?@awesomemypro我面临同样的错误,你能分享解决方案的详细信息吗?808?我的angular应用程序在4200上运行,但我通过80访问它(正如docker compose.yml中提到的)。后端在8080上运行。