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.
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.
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.
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}"/>
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
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!
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.
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.