请求太重时出现 NodeJS CORS 错误(文件上传)

Posted

技术标签:

【中文标题】请求太重时出现 NodeJS CORS 错误(文件上传)【英文标题】:NodeJS CORS error when req is too heavy (Files upload) 【发布时间】:2020-08-28 22:06:28 【问题描述】:

我正在使用一个 Angular 前端和一个 NodeJS API,这些 API 与一些 aws 服务(S3 和 Elastic Beanstalk)一起实际运行在 prod 中。

当我上传一张看起来很重的图片或上传两张以上的图片时,我实际上收到了这个 CORS 错误,每张图片需要 200Ko。

当然,我已经设置了我的标题,我不应该对 CORS 有任何问题,问题在于一些 req 大小限制。 我的 app.js 有一些部分。

app.use(bodyParser.json());
app.use(bodyParser.urlencoded( extended: false ));

app.use("/images", express.static(path.join("images")));

app.use((req, res, next) => 
    res.setHeader("Access-Control-Allow-Origin", "*");
    res.setHeader(
        "Access-Control-Allow-Headers",
        "Origin, X-Requested-With, Content-type, Accept, Authorization"
    );
    res.setHeader(
        "Access-Control-Allow-Methods",
        "GET, POST, PATCH, PUT, DELETE, OPTIONS"
    );
    next();
);

谢谢!

【问题讨论】:

试试这个。 app.use(bodyParser.urlencoded( parameterLimit: 100000, limit: '50mb', extended: true ));。从这里 -***.com/questions/31967138/… 我尝试了这段代码,但我确实有同样的错误。有趣的是,我没有错误“错误:请求实体太大” 【参考方案1】:

在 Node 之前使用 nginx 之类的网络服务器时,所有请求都会通过 Nginx 并在到达 Node.js 之前由 nginx 验证。

Nginx 默认有一个配置文件位于/etc/nginx/nginx.conf。这个文件有很多用于所有请求的默认属性,其中之一是client_max_body_size。该属性的默认值为 1M (1 MB),您的文件很可能超过了此限制。

检查 nginx 的日志只是为了确定 /var/log/nginx/error.log。您应该会看到以下错误 client intended to send too large body

为了解决这个问题,只需在您的nginx.conf 中输入以下内容: client_max_body_size 10M;。您可以将限制更改为适合您的任何内容。

【讨论】:

以上是关于请求太重时出现 NodeJS CORS 错误(文件上传)的主要内容,如果未能解决你的问题,请参考以下文章

向本地nodeJS服务器发出发布请求时出现AngularJS CORS错误

从 localhost Vue 项目调用 api 时出现 NodeJS CORS 错误

使用预签名 URL 将文件上传到 Amazon S3 时出现 CORS 错误

使用 POST API 时出现多个 CORS 错误

发出 GET 请求时没有 CORS 错误,但发出 POST 请求时出现 CORS 错误

尝试上传文件时出现“已被 CORS 策略阻止”