首页 > 解决方案 > Kubernetes Nginx 上传大文件 400 No 'Access-Control-Allow-Origin'

问题描述

当我保持默认proxy_body_size: 8m的nginx时。我无法上传文件大小> 8M。然后我像这样配置 nginx 注释:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: "ingress-name"
  annotations:

    nginx.ingress.kubernetes.io/proxy-body-size: 100m

所以,我现在可以上传> 8M的文件了。但是,我尝试上传大约 50m 的 CSV 文件,但出现错误

加载https://api.domain.xxx/import失败:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问源“ https://web.domain.xxx/ ”。响应的 HTTP 状态代码为 400。

谁能帮我上传最大文件是100m?

谢谢

标签: filenginxkubernetescorskubernetes-ingress

解决方案


问题是您尝试从与入口中指定的域不同的域上传文件。它可能是相同的域,但端口、协议 (http/https)、前缀为 www. 等不同

默认情况下,出于安全考虑,浏览器不允许这些请求。要允许它们,您应该启用 CORS:https ://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

幸运的是,在 ingress 中启用 CORS 非常容易,只需将以下注解添加到您的 api 的 ingress 资源中:

nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/cors-allow-methods: "PUT, GET, POST, OPTIONS"
nginx.ingress.kubernetes.io/cors-allow-origin: "https://web.domain.xxx"

有关这些注释的更多信息在这里


推荐阅读