跨域上传文件

发布于 2022-09-12 13:24:49 字数 780 浏览 12 评论 0

两个web服务器,一个用来上传文件,一个接收文件。在 chrome 中本地环境下配置好 CORS 是没有问题的。但是到了线上,两个不同的域名,在上传文件时有些文件类型可以上传比如 txt文件、png图片,但是有些文件上传不了,比如ppt,上传会报错。

跨域错误

这是文件服务器的 CORS 配置:

const whitelist = [
    'http://manager.xxx.cn'
];
const CORS_OPTIONS = {
    origin: whitelist,
    optionsSuccessStatus: 200,
    allowedHeaders: ['content-type', 'authorization'],
    methods: ['GET', 'PUT', 'POST', 'DELETE'],
    credentials: true
};

const express = require('express');
const cors = require('cors');
const app = express();

app.use(cors(CORS_OPTIONS));
// ...

我想上传任意类型的文件,在 input 中配置了 accept 也是不行。不知道与 Nginx 有没有关系,这是 Nginx 配置:

image

不知道该怎么解决,困扰了两天 ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

多情出卖 2022-09-19 13:24:49

刚发布问题,现在好像知道问题所在了。Nginx 配置有问题,默认情况下,Nginx设置请求的body大小是 1M,我因为没有配置,导致上传的文件如果大于 1M 时就会报错。在 location 中设置一下就可以成功上传文件了。

location /api {
    client_max_body_size 100m;
    # ...
}

在线上跑了一下,没有错误了,应该就是这个问题导致的。

╄→承喏 2022-09-19 13:24:49

补充之前碰到过的一种情况。跨域什么的都设置了,还是报错,看日志是才发现上传目录使用的默认目录,被系统清除了 /tmp/undertow.8081.7307999334485601410/undertow8778089254786386625upload

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文