【问题标题】:NodeJS CORS error when req is too heavy (Files upload)请求太重时出现 NodeJS CORS 错误(文件上传)
【发布时间】: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 }));。从这里 -stackoverflow.com/questions/31967138/…
  • 我尝试了这段代码,但我确实有同样的错误。有趣的是,我没有错误“错误:请求实体太大”

标签: javascript node.js api express cors


【解决方案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;。您可以将限制更改为适合您的任何内容。

【讨论】:

    猜你喜欢
    • 2018-07-07
    • 2021-03-02
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 2016-01-28
    • 2022-01-06
    • 2014-05-26
    • 2020-12-29
    相关资源
    最近更新 更多