Error parsing HTTP request header

2019-03-28 13:28发布

问题:

I am trying to send a POST request from browser to my server(local host). My request URL is :

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

requestData is a json String (I am using GSON for the purpose.) Everything is working fine until the data in the json string exceeds a particular limit. Say, I am sending array of objects in the json string. If the number of objects in the list exceed 67 then I get following error :

 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.

Why is this so? I am totally confused. Why does this happen and what needs to be done to fix this? I want to understand the reason behind this, for I don't understand that after particular number of objects it suddenly stops working and I get this error in my console.

Thanks.

回答1:

It seems that you are using POST incorrectly. Although you are using POST you are sending JSON as a request parameter that is the GET style. When using POST you should send content as a request body. In this case no reasonable size limitation exist.



回答2:

I had a similar issue, I was sending a POST request (using RESTClient plugin for Firefox) with data in the request body and was receiving the same message.

In my case this happened because I was trying to use HTTPS protocol in a local tomcat instance where HTTPS was not configured.



回答3:

In my case problem was caused by security issues, i used csfr for authentication, and all my post forms should have input with _csrf

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


回答4:

I apologize for not answering questions seriously before.

1.Maybe it caused by special characters.You can get details from this url。https://bz.apache.org/bugzilla/show_bug.cgi?id=60594

solve it by:

encodeURIComponent(JSON.stringify(data))

or change your tomcat version to 7.0.67 or lower. According to developers's opinion, tomcat developers in the following versions set the option to allow |,{,}. Get detail http://tomcat.apache.org/tomcat-8.0-doc/config/systemprops.html#Other

The new environment variable will be included in: - trunk for 9.0.0.M18 onwards

  • 8.5.x for 8.5.12 onwards

  • 8.0.x for 8.0.42 onwards

  • 7.0.x for 7.0.76 onwards2.

Another reason maybe that Request header is too large.You can solve this by modifying the server.xml.

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

Hope it works for you!



回答5:

IMHO the problem of parsing the headers can be caused by numerous reasons.

In my case it was due to the fact that the following XML was passed:

<soapenv:Header/>

The empty header element was generated by SoapUI. After the removal of the <soapenv:Header/> from the XML of the WS then everything was fine.



回答6:

I fixed this by passing an additional header

connection: close, along with the request.

Could you please try and let me know if this works for you.