8

如果这是一个非常无知的问题,我很抱歉,但大使是否有可能真正处理 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 内容。

4

1 回答 1

3

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

所以这现在是我的模块:

getambassador.io/config: |
--- 
apiVersion: ambassador/v1
kind:  Module
name:  ambassador
config:
  service_port: 8080
  cors:
    origins: [my domain here]
    headers: "Content-Type"
    credentials: true
于 2019-05-31T15:37:45.700 回答