2016-05-10 60 views
0

我試圖通過ajax使用REST服務。爲此,我發送jquery AJAX POST請求失敗,並顯示以下消息。AJAX POST請求由於Payload內容長度而失敗

{"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) { 

     } 
); 

回答

1

編輯Tomcat的server.xml。在<Connector>元素中,添加一個屬性maxPostSize並設置較大的值(以字節爲單位)以增加限制。

+0

對不起,我們正在使用Java。編輯我的問題補充說。 –

+0

更新了我的回答 – madalinivascu

0

爲了增加數據包的大小,你不需要在Java端做任何事情,但你需要改變服務器上的nginx配置。

您需要增加參數client_max_body_size的大小(可能在配置中設置,如果不添加)。

切記該參數需要以字節爲單位的大小,因此計算並將數字設置爲與數據包最大大小一樣高。

+0

我需要將它作爲nginx.conf中的client_max_body_size作爲變量添加嗎? –

+0

在定義爲處理您的http端口流量的服務器部分中,例如'server {client_max_body_size 4194304; }' – dbw

+0

改變了這個,但它沒有解決問題 –