【问题标题】:Can Ambassador handle CORS requests?大使可以处理 CORS 请求吗?
【发布时间】:2019-10-17 04:55:18
【问题描述】:

很抱歉,如果这是一个非常无知的问题,但大使是否有可能真正处理 CORS 标头和飞行前 OPTION 响应?

文档 (https://www.getambassador.io/reference/cors) 对我来说似乎有点模棱两可,如果只有钩子可以阻止请求,或者它是否可以真正代表服务响应。

这是我的情况:在对某些微服务的所有 http 请求之前,我有大使。 [原因] 我们现在需要一个单独的域来向同一个大使发出请求。

我配置了 AuthService,并且根据文档“当您使用外部授权时,每个传入请求在路由到其目的地之前都经过身份验证,包括飞行前 OPTIONS 请求。”这是完全有道理的,这就是我所看到的。我的 AuthService 被配置为允许正确的事情,这似乎是有效的。 AuthService 以适当的标头响应,但 Ambassador 似乎只是忽略了这一点,只关心 AuthService 是否以 200 响应。 (这似乎完全合理。)

我的大使模块上有这个注释:

getambassador.io/config: |
  --- 
  apiVersion: ambassador/v1
  kind:  Module
  name:  ambassador
  config:
    service_port: 8080
    cors:
      origins: [my domain here]
      credentials: true

这似乎并没有达到我的预期,即处理 CORS 标头和飞行前...而是将其转发到服务以处理所有 CORS 内容。

【问题讨论】:

    标签: kubernetes cors microservices ambassador


    【解决方案1】:

    事实证明,通过在 cors 配置中指定 headers: "Content-Type",事情才刚刚开始工作。显然这不像我想象的那么可选。

    所以这现在是我的模块:

    getambassador.io/config: |
    --- 
    apiVersion: ambassador/v1
    kind:  Module
    name:  ambassador
    config:
      service_port: 8080
      cors:
        origins: [my domain here]
        headers: "Content-Type"
        credentials: true
    

    【讨论】:

    • 顺便说一句,让整个工作正常运行的另一个重要部分:我们需要在 AuthService 注释中添加一个allow_authorization_header 以允许我们将标头传递给处理请求的服务。这对每个人来说都不是必需的,但是如果您希望您的 AuthService 添加额外的标头,您将需要这个。
    • 我目前也在努力让它发挥作用。您能简要解释一下您目前实施的流程吗?所以我正在做的事情如下:在我的身份验证服务中,我使用 CORS 标头进行响应,并且当我针对身份验证测试 CORS 时,一切正常。我还在大使模块中定义了表单属性,但是对我的微服务的所有请求都不会在对 OPTIONS 请求的响应中包含允许来源标头。如果可能,我不希望我的上游微服务处理任何 cors
    • 我不是 100% 确定我在关注你,但你应该绝对能够让你的微服务忽略正在发生的 CORS。您的身份验证服务确实必须处理 CORS,因为它必须返回 200 但它的响应标头无关紧要。您需要在其上添加一个 Ambassador 注释,指定允许的来源、方法和内容类型的标头。答案中的示例就是(我认为)您所需要的全部。
    • 感谢您抽出宝贵时间!所以你是说我需要在我的 Auth Service 中用 200 响应来回答所有 OPTIONS 请求?因为目前我正在用 204 回复他们..
    • 我认为 204 应该没问题...您可以尝试切换它,看看会发生什么,但我认为任何 2XX 都足以让大使认为它通过了 AuthService 检查。客户端从 OPTIONS 请求中得到了什么?
    猜你喜欢
    • 2014-01-13
    • 2018-05-30
    • 2016-08-19
    • 1970-01-01
    • 2014-03-25
    • 2020-06-30
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多