【问题标题】:How to enable cross-origin in spring -boot for micro-services如何在spring-boot中为微服务启用跨域
【发布时间】:2019-10-05 14:09:00
【问题描述】:

我有近 5 个 Spring Boot 应用程序连接到发现服务以相互通信。而且我想向公众公开一些控制器,那么如何启用跨域?我应该在所有控制器级别还是从发现开始?请有其他建议!

【问题讨论】:

  • 这真的取决于。有时,与其向公众公开许多控制器(服务),不如创建一个外观服务来“前置”其他服务,和/或将服务置于 API 网关或其他一些安全机制之后。那么我们只需要启用对外观服务(或在 API 网关)的跨域访问,而不是在单个微服务级别。
  • @peekay 我可以在所有服务前使用 kong API getaway 来处理 cors 吗?
  • 是的,有一个插件:docs.konghq.com/hub/kong-inc/cors(请参阅页面底部的限制)。

标签: spring-boot cors api-gateway


【解决方案1】:

在您的控制器类或您希望允许的每个控制器方法上使用 @CrossOrigin 注释。

您还可以在其中一个配置类中创建WebMvcConfigurer Bean,您可以在其中在全局级别建立跨源配置。

编辑:我也喜欢@peekay 的建议。

【讨论】:

  • 我可以在所有服务前使用kong API getaway来处理cors吗?
  • 我不明白为什么不这样做。您只需要在您的 API 和 Kong API 网关之间启用 CORS。然后让 Kong 将所有 API 请求代理到您的后端 API。
  • 在这种情况下,不需要在微服务 API 和 Kong 之间启用 CORS……只需让 Kong 处理网关和浏览器之间的 CORS。 (孔has a plugin for this purpose)。微服务根本不需要了解 CORS(可以说,它们也不应该——它们应该与客户端无关。)。
【解决方案2】:

我在所有服务前都使用过 Kong Api Gateway。要启用跨域。它很容易在单个位置而不是在每个控制器中完成

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-02
    • 2018-08-21
    • 2021-04-09
    • 2021-01-28
    • 2017-10-04
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多