【问题标题】:Ingress nginx enable Cors headers only on Specific HostsIngress nginx 仅在特定主机上启用 Cors 标头
【发布时间】: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


    【解决方案1】:

    这是因为您启用了 cors nginx.ingress.kubernetes.io/enable-cors: "true" 并且 nginx.ingress.kubernetes.io/cors-allow-origin 的默认值开始发挥作用,即 *。 只需使用适当的注释对其进行配置,如下所示:

    nginx.ingress.kubernetes.io/enable-cors: "true"
    nginx.ingress.kubernetes.io/cors-allow-origin: "https://origin-site.com"
    

    更多信息可以在这里找到: https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#enable-cors

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-20
      • 1970-01-01
      • 1970-01-01
      • 2019-06-18
      • 2015-06-06
      • 2017-11-18
      • 2017-04-20
      • 2020-04-27
      相关资源
      最近更新 更多