我需要允许来自多个来源的请求:http://localhost:4200、http://localhost:4242等,在nginx版本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策略阻止从“https://stage.site.com/api/session”从“http://localhost:4200”访问“https://stage.site.com/api/session”:当请求的凭据模式为“包括”时,响应中的“访问-控制-允许-原产地”标题的值不能是通配符“*”。由XMLHttpRequest发起的请求的凭据模式由withCredentials属性控制。
发布于 2018-08-08 10:43:18
添加注释以启用CORS
nginx.ingress.kubernetes.io/enable-cors: "true"请注意,字符串"*“不能用于支持凭据 (https://www.w3.org/TR/cors/#resource-requests)的资源,请尝试使用域列表(逗号分隔)而不是*。
发布于 2020-04-03 14:13:11
您可以创建一个具有不同域和cors来源的第二个侵入域,指向相同的目的地。这不是最好的解决办法,但有效。
或者:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/configuration-snippet: |
more_set_headers "Access-Control-Allow-Origin: $http_origin";
nginx.ingress.kubernetes.io/cors-allow-credentials: "true"
nginx.ingress.kubernetes.io/cors-allow-methods: PUT, GET, POST,
OPTIONS, DELETE, PATCH
nginx.ingress.kubernetes.io/enable-cors: "true"但是注意,$http_origin允许所有的来源!
发布于 2022-11-10 05:20:53
现在可以在cors-allow-origin中以逗号分隔值的形式添加多个源。
示例:
nginx.ingress.kubernetes.io/cors-allow-origin: "https://example.com, https://another.com, http://localhost:8000"来源:Cors允许多源
https://stackoverflow.com/questions/51744536
复制相似问题