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

时间:2019-11-07 07:36:44

标签: angular spring spring-boot docker cors

我已经部署了3个docker容器-用于数据库,后端(Spring引导)和前端(Angular)。但是,当我访问网站(Google Cloud VM)时,对于后端的所有请求都收到CORS错误。后端在8080上运行。

访问IP:80时会收到CORS

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

这是我在控制器中使用CrossOrigin的方式。

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

@Cross:将应用于单页,它将不适用于整个应用程序,因此,我建议您遵循以下类似方案链接:CORS Config中定义的方法。您可以在其中为整个应用程序定义过滤器,并更好地控制CORS的配置。

如果您已将Spring安全性与您的应用程序集成在一起,则还需要处理一些配置更改才能使其正常工作。

希望这很有帮助

答案 1 :(得分:1)

不允许您从脚本中调用与您呈现页面相同的域下找不到的URL:

  

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

来源:https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

您实际上有3个选择:

  1. 将8080端口(Spring Boots Tomcat服务器的端口)添加到您的例外中(请参阅:https://spring.io/guides/gs/rest-service-cors/
  2. 使用nginx之类的反向代理将您的请求路由到API或根据请求提供Angular资源
  3. 从您的Spring Boot应用程序提供Angualr资源