我正在尝试从浏览器向我的服务器(本地主机)发送POST
请求。我的请求网址是:
http://localhost:8080/myPath/myServlet?requestData={ .......//Json String......};
requestData
是一个json String(我正在使用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.
为什么会这样?我完全糊涂了。为什么会发生这种情况以及需要采取哪些措施来解决这个问题? 我想了解这背后的原因,因为我不明白在特定数量的对象之后突然停止工作,我在控制台中出现了这个错误。
感谢。
答案 0 :(得分:4)
您似乎错误地使用了POST。虽然您使用的是POST,但您发送的JSON作为GET样式的请求参数。使用POST时,您应该将内容作为请求正文发送。在这种情况下,不存在合理的尺寸限制。
答案 1 :(得分:4)
我遇到了类似的问题,我在请求正文中发送了一个POST请求(使用RESTClient插件,用于Firefox),并且收到了相同的消息。
在我的情况下,这是因为我试图在未配置HTTPS的本地tomcat实例中使用HTTPS协议。
答案 2 :(得分:1)
在我的情况下,问题是由安全问题引起的,我使用csfr进行身份验证,我的所有帖子表单都应该输入_csrf
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
答案 3 :(得分:1)
我很抱歉没有认真回答问题。
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.x for 8.5.12以后
8.0.x for 8.0.42以后
7.0.x for 7.0.76 onwards2。
另一个原因可能是Request标头太大。您可以通过修改server.xml
来解决此问题。
<Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150"
minSpareThreads="25" maxSpareThreads="75" enableLookups="false"
redirectPort="8443" acceptCount="100" connectionTimeout="20000"
disableUploadTimeout="true" />
希望它适合你!
答案 4 :(得分:0)
恕我直言,解析标题的问题可能由多种原因引起。
就我而言,这是因为传递了以下XML:
<soapenv:Header/>
空头元素由SoapUI生成。
从WS的XML中删除<soapenv:Header/>
后,一切都很好。
答案 5 :(得分:0)
我通过传递附加的标头来解决此问题
连接:关闭以及请求。
请您尝试让我知道是否适合您。