Ambassador 可以处理 CORS 请求吗?
Can Ambassador handle CORS requests?
如果这是一个非常无知的问题,我很抱歉,但是 Ambassador 是否有可能真正处理 CORS headers 和 pre-flight OPTION 响应?
文档 (https://www.getambassador.io/reference/cors) 对我来说似乎有点模棱两可,是否只有挂钩来阻止请求,或者它是否可以代表服务真正响应。
这是我的情况:我在对某些微服务的所有 http 请求前面都有 Ambassador。由于[原因],我们现在需要一个单独的域来向同一个大使发出请求。
我配置了一个 AuthService,根据文档 "When you use external authorization, each incoming request is authenticated before routing to its destination, including pre-flight OPTIONS requests." 这非常合理,这就是我所看到的。我的 AuthService 被配置为允许正确的事情并且似乎正在工作。 AuthService 以适当的 headers 响应,但 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 headers 和 pre-flight... 而是将其转发到服务以处理所有CORS 的东西。
事实证明,通过在 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
如果这是一个非常无知的问题,我很抱歉,但是 Ambassador 是否有可能真正处理 CORS headers 和 pre-flight OPTION 响应?
文档 (https://www.getambassador.io/reference/cors) 对我来说似乎有点模棱两可,是否只有挂钩来阻止请求,或者它是否可以代表服务真正响应。
这是我的情况:我在对某些微服务的所有 http 请求前面都有 Ambassador。由于[原因],我们现在需要一个单独的域来向同一个大使发出请求。
我配置了一个 AuthService,根据文档 "When you use external authorization, each incoming request is authenticated before routing to its destination, including pre-flight OPTIONS requests." 这非常合理,这就是我所看到的。我的 AuthService 被配置为允许正确的事情并且似乎正在工作。 AuthService 以适当的 headers 响应,但 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 headers 和 pre-flight... 而是将其转发到服务以处理所有CORS 的东西。
事实证明,通过在 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