Ingress 兼容https & http 跨域配置access-control-allow-origin

Ingress 兼容前端https & http 跨域配置access-control-allow-origin

场景说明:

前端域名a.com访问后端b.com域名,其中b.com使用Ingress配置,需要支持http://a.comhttps://a.com两种前端域名跨域方式访问b.com

一、使用Ingress原生跨域Annotations配置只可满足其中一种情况

注意,官方最新的文档cors-allow-origin支持配置多个域名,但在我们使用的比较旧的版本0.32中配置两个直接被设置为*,导致失败

annotations:
  nginx.ingress.kubernetes.io/enable-cors: 'true'
  nginx.ingress.kubernetes.io/cors-allow-origin: 'https://a.com'
  # 或者 nginx.ingress.kubernetes.io/cors-allow-origin: 'http://a.com'
  nginx.ingress.kubernetes.io/cors-allow-methods: '*'
  nginx.ingress.kubernetes.io/cors-allow-headers: '*'
  nginx.ingress.kubernetes.io/cors-allow-credentials: 'true'

二、以上配置生成的nginx.conf片段

# Cors Preflight methods needs additional options and different Return Code
 if ($request_method = 'OPTIONS') {
         more_set_headers 'Access-Control-Allow-Origin: *';
         more_set_headers 'Access-Control-Allow-Credentials: true';
         more_set_headers 'Access-Control-Allow-Methods: *';
         more_set_headers 'Access-Control-Allow-Headers: *';
         more_set_headers 'Access-Control-Max-Age: 1728000';
         more_set_headers 'Content-Type: text/plain charset=UTF-8';
         more_set_headers 'Content-Length: 0';
         return 204;
 }

 more_set_headers 'Access-Control-Allow-Origin: *';
 more_set_headers 'Access-Control-Allow-Credentials: true';
 more_set_headers 'Access-Control-Allow-Methods: *';
 more_set_headers 'Access-Control-Allow-Headers: *';

三、根据自动生成的nginx.conf改为使用configuration-snippet配置

annotations:
    nginx.ingress.kubernetes.io/configuration-snippet: |
      if ($request_method = 'OPTIONS') { 
        more_set_headers "Access-Control-Allow-Origin: $http_origin"; 
        more_set_headers 'Access-Control-Allow-Credentials: true'; 
        more_set_headers 'Access-Control-Allow-Methods: *';
        more_set_headers 'Access-Control-Allow-Headers: *';
        more_set_headers 'Access-Control-Max-Age: 1728000';
        more_set_headers 'Content-Type: text/plain charset=UTF-8';
        more_set_headers 'Content-Length: 0'; 
        return 204; 
      }   
      more_set_headers "Access-Control-Allow-Origin: $http_origin"; 
      more_set_headers 'Access-Control-Allow-Credentials: true'; 
      more_set_headers 'Access-Control-Allow-Methods: *'; 
      more_set_headers 'Access-Control-Allow-Headers: *';
    nginx.ingress.kubernetes.io/ssl-redirect: 'false'
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值