【问题标题】:AJAX POST request is failing because of Payload content length由于有效负载内容长度,AJAX POST 请求失败
【发布时间】:2016-09-04 23:45:53
【问题描述】:

我正在尝试通过 ajax 使用 REST 服务。为此,我正在发送 jquery AJAX POST 请求,该请求失败并显示以下消息。

{"statusCode":400,"error":"Bad Request","message":"Payload content length greater than maximum allowed: 1048576"}

我们尝试发送的有效负载大小约为 3 mb。

服务 API 是用 JAVA 开发的,在服务 API 方面,我们有 nginx 作为 Web 服务器,tomcat 作为应用服务器。

如何增加有效负载内容的长度,以便我们能够解决上述错误?

AJAX 如下:

 $.ajax({
        type: "POST",
        crossDomain: true,
        //contentType: "application/json; charset=utf-8",
        beforeSend: function (request) {
          // Headers as below
          setRequestHeadersOfFMAPI(request);
        },
        contentType: "application/json",
        dataType: "json",
        timeout: (3000 * 60 * 10),
        url: urlContext + "/api/v1/application/google_bps_app/metrics/actuals",
        data: JSON.stringify({
          "actuals": activities
        }),

        success: function (data) {

        }
);

【问题讨论】:

    标签: java json ajax tomcat nginx


    【解决方案1】:

    编辑 Tomcat 的server.xml。在<Connector> 元素中,添加属性maxPostSize 并设置更大的值(以字节为单位)以增加限制。

    【讨论】:

    • 抱歉,我们使用的是 Java。编辑了我的问题以添加它。
    【解决方案2】:

    为了增加数据包的大小,你不需要在 Java 端做任何事情,但你需要更改服务器上的 nginx 配置。

    您需要增加参数client_max_body_size的大小(可能在配置中设置,如果不添加)。

    记住此参数以字节为单位,因此请计算并输入与您的数据包最大大小一样高的数字。

    【讨论】:

    • 是否需要在 nginx.conf 中将其添加为 client_max_body_size 作为变量?
    • 在定义为处理您的 http 端口流量的服务器部分中,例如 server { client_max_body_size 4194304; }
    • 改变了这个但它没有解决问题
    • 您是否在保存脚本后重新启动了 nginx,因为我们这边同样的工作完美,如果您安装了 php,链接可能会有所帮助cyberciti.biz/faq/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-24
    • 2021-06-01
    • 2010-10-09
    相关资源
    最近更新 更多