8

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.

Alexis Wilke
  • 19,179
  • 10
  • 84
  • 156
user3686864
  • 337
  • 2
  • 5
  • 13

6 Answers6

5

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.

nkatsar
  • 1,580
  • 17
  • 15
  • I'm setting up a new tomcat server, and I've somehow configured port 8443 as HTTP (not HTTPS) (not realizing that I did this), so normal requests such as (https://localhost:8443) which normally go to the Manager GUI (on a new instance failed with this error). I was missing the `SSLEnabled="true"` property on the `` element. Basically the browser is negotiating an SSL/HTTPS connection and the server is only talking HTTP. – PatS Mar 14 '23 at 17:01
4

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.

AlexR
  • 114,158
  • 16
  • 130
  • 208
  • 1
    Please take a look on this tutorial: http://www.mkyong.com/java/how-to-send-http-request-getpost-in-java/ – AlexR Oct 22 '14 at 09:31
  • How can I send it from the browser? – user3686864 Oct 22 '14 at 09:38
  • 1
    You can write HTML page with `form` tag, define its `method=POST` and configure `action` to your URL, create text area field, then write your JSON there and press button `submit`. – AlexR Oct 22 '14 at 09:41
2

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!

Michael Lihs
  • 7,460
  • 17
  • 52
  • 85
轩加振
  • 21
  • 2
1

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}"/>
Daria
  • 11
  • 1
0

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.

Rudy Vissers
  • 5,267
  • 4
  • 35
  • 37
0

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.

Manish Singh
  • 53
  • 1
  • 7