簡體   English   中英

為什么在發布 JSON 字符串時會出現“解析 HTTP 請求標頭時出錯”?

[英]Why do I get “Error parsing HTTP request header” when POSTing a JSON string?

我正在嘗試從瀏覽器向我的服務器(本地主機)發送POST請求。 我的請求網址是:

 http://localhost:8080/myPath/myServlet?requestData={  .......//Json String......};

requestData是一個 json 字符串(我為此使用 GSON。)一切正常,直到 json 字符串中的數據超過特定限制。 說,我在 json 字符串中發送對象數組。 如果列表中的對象數量超過67則會出現以下錯誤:

 AM org.apache.coyote.http11.AbstractHttp11Processor process
 INFO: Error parsing HTTP request header
 Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.

為什么會這樣? 我完全糊塗了。 為什么會發生這種情況,需要采取什么措施來解決這個問題? 我想了解這背后的原因,因為我不明白在特定數量的對象之后它突然停止工作並且我在控制台中收到此錯誤。

您似乎錯誤地使用了 POST。 盡管您使用的是 POST,但您將 JSON 作為 GET 樣式的請求參數發送。 使用 POST 時,您應該將內容作為請求正文發送。 在這種情況下,不存在合理的大小限制。

我有一個類似的問題,我在請求正文中發送一個帶有數據的 POST 請求(使用 RESTClient 插件 for Firefox)並收到相同的消息。

就我而言,發生這種情況是因為我試圖在未配置 HTTPS 的本地 tomcat 實例中使用 HTTPS 協議。

之前沒有認真回答問題,我深表歉意。

1.可能是特殊字符引起的,具體可以到這個網址查看。 https://bz.apache.org/bugzilla/show_bug.cgi?id=60594

解決方法:

encodeURIComponent(JSON.stringify(data))

或將您的 tomcat 版本更改為 7.0.67 或更低。 根據開發者的意見,以下版本的tomcat開發者設置了允許|,{,}的選項。 獲取詳細信息http://tomcat.apache.org/tomcat-8.0-doc/config/systemprops.html#Other

新的環境變量將包含在: - 9.0.0.M18 以后的主干

  • 8.5.12 以后的 8.5.x

  • 8.0.42 以后的 8.0.x

  • 7.0.x 為 7.0.76 起2。

另一個原因可能是Request header過大,可以通過修改server.xml來解決。

<Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" 
    minSpareThreads="25" maxSpareThreads="75" enableLookups="false"
    redirectPort="8443" acceptCount="100" connectionTimeout="20000" 
    disableUploadTimeout="true" />

希望這對你有用!

在我的情況下,問題是由安全問題引起的,我使用 csfr 進行身份驗證,並且我所有的帖子表單都應該輸入 _csrf

<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>

恕我直言,解析標題的問題可能由多種原因引起。

就我而言,這是因為通過了以下 XML:

<soapenv:Header/>

空的標題元素是由 SoapUI 生成的。 從 WS 的 XML 中刪除<soapenv:Header/>之后,一切都很好。

我通過傳遞一個額外的標題來解決這個問題

連接:關閉,連同請求。

你能不能試着讓我知道這是否適合你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM