file - 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?
谢谢
解决方案
问题是您尝试从与入口中指定的域不同的域上传文件。它可能是相同的域,但端口、协议 (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"
有关这些注释的更多信息在这里
推荐阅读
- slack - 从斜杠命令获取 Slack trigger_id
- r - R for循环:为每个循环执行迭代
- java - Spring security:身份验证失败,提供更多详细信息
- python - 执行谷歌搜索然后将结果保存在 django 数据库中
- android - Flutter 谷歌地图 - 如何使用 Cloud Styling
- bash - bash 循环文件回显 .sh 文件并且没有扩展文件
- python - Python多线程产生时髦的结果
- javascript - 下载带有服务器节点和 vue.js 的 pdf
- javascript - 在 javascript 中使用 python 输出
- lua - 在 roblox studio 中创建电话和呼叫朋友