【发布时间】:2021-05-21 09:41:36
【问题描述】:
我有一个 Ingress 配置,我想在某些特定主机上启用 cors 标头!
我将入口中的注解设置为
nginx.ingress.kubernetes.io/configuration-snippet: |
more_set_headers "Access-Control-Allow-Origin: $http_origin";
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/cors-allow-credentials: "true"
这可行,但也会在其他一些主机中设置 Access-Control-Allow-Origin 例如:
curl 'https://example.com' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:88.0) Gecko/20100101 Firefox/88.0' -H 'Accept: application/json' -H 'Accept-Language: en,en-US;q=0.7,en;q=0.3' --compressed -H 'Origin: https://hacker.org' -H 'Connection: keep-alive' -v
结果将是Access-Control-Allow-Origin: hacker.org
这不是我所期望的!
我想以仅在某些特定主机上设置Access-Control-Allow-Origin 的方式配置入口!
我试过这个注释!
nginx.ingress.kubernetes.io/configuration-snippet: |
if ($http_origin ~* 'https://example.com') {
more_set_headers "Access-Control-Allow-Origin: $http_origin";
}
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/cors-allow-credentials: "true"
但是不起作用!
我希望入口配置为仅在某些特定主机上设置 Cors 标头!
【问题讨论】:
标签: nginx kubernetes kubernetes-ingress nginx-ingress