Error parsing HTTP request header

原文地址:http://www.w2bc.com/Article/15349

parse [pɑ:z] [pɑ:rs]
vt.(词句等) 从语法上描述或分析;

全部释义>>

[例句] I'm not going to parse his statement.
我不打算 分析他的声明.

更多例句>>

过去式:parsed  现在分词:parsing  过去分词:parsed  第三人称单数:parses

手机客户端向服务器提交Http请求时,Tomcat抛出错误:

十二月 31, 2014 2:32:45 下午 org.apache.coyote.http11.AbstractHttp11Processor process
信息: Error parsing HTTP request header
 Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.

经过调试后发现是Tomcat的header缓冲区大小不够,只需要在server.xml中增加maxHttpHeaderSize字段即可:

<Connector URIEncoding="UTF-8" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
	useBodyEncodingForURI="false"
	enableLookups="false"
               connectionTimeout="20000"
               redirectPort="8443" maxHttpHeaderSize="你想要的大小"/>

不过使用Web提交就不会出现这种问题,即使手机端再三强调使用的是Post方式,仍怀疑是因为使用的Get导致Header数据过长.



============


我修改的如下(顺便把端口从8080改到了80),然后用bin/shutdown.sh和bin/startup.sh来重启:


  <Connector port="80" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" maxHttpHeaderSize="8192"  URIEncoding="UTF-8" />

    <!-- A "Connector" using the shared thread pool-->

    <!--

    <Connector executor="tomcatThreadPool"

               port="80" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" maxHttpHeaderSize="8192"  URIEncoding="UTF-8" />

    -->

======================

但是关闭和启动执行太快,秒级完成。启动在关闭后等了几分钟才去输入的启动指令。但是好像没有真正起来,估计和数据库有关。reboot后也不管用。猜测是不是应该先听或者关闭PostGreSQL然后再执行Tomcat的关闭和启动?


[root@david bin]# ./shutdown.sh

Using CATALINA_BASE:   /lr62/liferay-portal-6.2-ce-ga4/tomcat-7.0.42

Using CATALINA_HOME:   /lr62/liferay-portal-6.2-ce-ga4/tomcat-7.0.42

Using CATALINA_TMPDIR: /lr62/liferay-portal-6.2-ce-ga4/tomcat-7.0.42/temp

Using JRE_HOME:        /usr/java/jre1.8.0_45

Using CLASSPATH:       /lr62/liferay-portal-6.2-ce-ga4/tomcat-7.0.42/bin/bootstrap.jar:/lr62/liferay-portal-6.2-ce-ga4/tomcat-7.0.42/bin/tomcat-juli.jar

[root@david bin]# ./startup.sh

Using CATALINA_BASE:   /lr62/liferay-portal-6.2-ce-ga4/tomcat-7.0.42

Using CATALINA_HOME:   /lr62/liferay-portal-6.2-ce-ga4/tomcat-7.0.42

Using CATALINA_TMPDIR: /lr62/liferay-portal-6.2-ce-ga4/tomcat-7.0.42/temp

Using JRE_HOME:        /usr/java/jre1.8.0_45

Using CLASSPATH:       /lr62/liferay-portal-6.2-ce-ga4/tomcat-7.0.42/bin/bootstrap.jar:/lr62/liferay-portal-6.2-ce-ga4/tomcat-7.0.42/bin/tomcat-juli.jar

[root@david bin]# 


=============

然后网站出来了如下的信息:


HTTP Status 500 - java.lang.ArrayIndexOutOfBoundsException: 0


type Exception report

message java.lang.ArrayIndexOutOfBoundsException: 0

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: java.lang.ArrayIndexOutOfBoundsException: 0
	com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:105)
	com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:119)

root cause

java.lang.ArrayIndexOutOfBoundsException: 0
	com.liferay.portal.util.PortalInstances._getDefaultCompanyId(PortalInstances.java:344)
	com.liferay.portal.util.PortalInstances.getDefaultCompanyId(PortalInstances.java:83)
	com.liferay.portal.util.PortalImpl.getDefaultCompanyId(PortalImpl.java:1909)
	com.liferay.portal.util.PortalUtil.getDefaultCompanyId(PortalUtil.java:522)
	com.liferay.portal.servlet.filters.validhostname.ValidHostNameFilter.doFilterTry(ValidHostNameFilter.java:38)
	com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:183)
	com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:96)
	com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:119)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.42 logs.


Apache Tomcat/7.0.42




引用\[1\]:这个问题通常是由于HTTP请求头部过长导致的。可以通过在Tomcat的server.xml文件中添加maxHttpHeaderSize属性来解决这个问题。例如,在Connector元素中添加maxHttpHeaderSize="8192"。这样可以增加HTTP请求头部的大小限制。\[1\] 引用\[2\]:另外,报错信息中还提到了"Invalid character found in the request target"。这意味着请求目标中存在无效字符。根据RFC 7230和RFC 3986的定义,请求目标中只能包含特定的有效字符。如果请求目标中包含了无效字符,就会导致解析错误。\[2\] 引用\[3\]:还有一种可能的错误是"Invalid character found in method name"。这意味着HTTP方法名中存在无效字符。根据HTTP协议的规定,HTTP方法名必须是有效的标记。如果方法名中包含了无效字符,就会导致解析错误。\[3\] 综上所述,"error parsing http request header"的问题通常是由于HTTP请求头部过长或包含无效字符导致的。可以通过增加maxHttpHeaderSize属性来解决头部过长的问题,并确保请求目标和方法名中只包含有效字符。 #### 引用[.reference_title] - *1* [Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors报错,已...](https://blog.csdn.net/qq_44893880/article/details/105755299)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [【TomcatError parsing HTTP request header的解决方案](https://blog.csdn.net/qq_33591903/article/details/104915079)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值