我需要允许来自多个来源的请求:http://localhost:4200
,http://localhost:4242
,等等,在nginx-ingress版本1.7.1上。但是我不能对多个源进行此操作,因为nginx.ingress.kubernetes.io/cors-allow-credentials: true
不能与nginx.ingress.kubernetes.io/cors-allow-origin: "*"
一起工作。这会导致浏览器生成CORS错误。也许有人有避免此错误的解决方案?
这是我的配置
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/cors-allow-origin: "*"
nginx.ingress.kubernetes.io/cors-allow-methods: "PUT, GET, POST, OPTIONS, DELETE"
nginx.ingress.kubernetes.io/cors-allow-headers: "DNT,X-CustomHeader,X-LANG,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Api-Key,X-Device-Id,Access-Control-Allow-Origin"
CORS策略已阻止从源“http://localhost:4200 "访问”https://stage.site.com/api/session"处的XMLHttpRequest:当要求的认证模式为'include'时,回应中的'Access-Control-Allow-Origin'信头值不得为万用字符'*'。XMLHttpRequest起始之要求的认证模式是由withCredentials属性控制。
4条答案
按热度按时间iyr7buue1#
添加注解以启用
CORS
:请注意,字符串“*”不能用于支持凭据的资源(https://www.w3.org/TR/cors/#resource-requests),请尝试使用您的域列表(逗号分隔)而不是 *
e5njpo682#
你可以创建第二个入口,使用不同的域和cors源,指向相同的目的地。不是最好的解决方案,但它的工作。
或者:
但$http_origin正在允许每一个原点注意!
w7t8yxp53#
这是一个合理要求的功能:https://github.com/kubernetes/ingress-nginx/issues/5496
作为当前的解决方法,您可以使用以下代码段为CORS定义多个域:https://github.com/kubernetes/ingress-nginx/issues/5496#issuecomment-662798662
PR已经提交并等待完成。因此,它应该在即将发布的版本中本地推出:https://github.com/kubernetes/ingress-nginx/pull/7134
envsm3lx4#
现在,您可以在
cors-allow-origin
中添加多个原点作为逗号分隔值示例:
来源:Cors允许多个来源