You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hc.apache.org by "yangqing (JIRA)" <ji...@apache.org> on 2011/09/04 11:14:09 UTC

[jira] [Created] (HTTPCORE-274) Invalid Header

Invalid Header
--------------

                 Key: HTTPCORE-274
                 URL: https://issues.apache.org/jira/browse/HTTPCORE-274
             Project: HttpComponents HttpCore
          Issue Type: Bug
          Components: HttpCore
    Affects Versions: 4.2-alpha1
         Environment: windows7, ie9, chrome13, jdk7
            Reporter: yangqing
            Priority: Minor


When I tried to get a page using HttpClient, I got the exception below, the url is "http://ss.97down.info/mimi/file.php/L87S8KD.html".

Caused by: org.apache.http.ProtocolException: Invalid header: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	at org.apache.http.impl.io.AbstractMessageParser.parseHeaders(AbstractMessageParser.java:226)
	at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:261)
	at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:284)
	at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:247)
	at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:219)
	at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:300)
	at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:127)
	at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:645)
	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:464)
	at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)

The page can be displayed normally in IE and Chrome. I traced the source code of HttpCore, and find this line in BufferedHeader.java, 
 int colon = buffer.indexOf(':');
I found that except other normal headers, there was really an odd header, the value is :
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
The format is ugly, there is no colon in it, and caused an exception.

The orginal header the Chrome gets is like:

HTTP/1.1 200 OK
Connection: close
Date: Sat, 04 Sep 2010 08:46:38 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-Powered-By: PHP/5.2.8
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Content-type: text/html

Yes, it's malformated, but Chrome parsed it as:

Connection:close
Content-type:text/html
Date:Sat, 04 Sep 2010 08:46:38 GMT
Server:Microsoft-IIS/6.0
X-Powered-By:ASP.NET
PHP/5.2.8

I then and a snippet in the for loop of the parseHeaders method of the class AbstractMessageParser.java to ignore this type of error.
 if(current.indexOf(':')<=0){
                continue;
 }

It works for me, I hope someone can fix this problem.

Thanks!



--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org


[jira] [Commented] (HTTPCORE-274) Invalid Header

Posted by "Sebb (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HTTPCORE-274?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13096850#comment-13096850 ] 

Sebb commented on HTTPCORE-274:
-------------------------------

That is an invalid header. 

The server is misbehaving; it should never send such a header, so HC is correct in reporting it.

It might however be worth enhancing HC to optionally log the error rather than throw an Exception; that would allow clients to ignore the error.

> Invalid Header
> --------------
>
>                 Key: HTTPCORE-274
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-274
>             Project: HttpComponents HttpCore
>          Issue Type: Bug
>          Components: HttpCore
>    Affects Versions: 4.2-alpha1
>         Environment: windows7, ie9, chrome13, jdk7
>            Reporter: yangqing
>            Priority: Minor
>
> When I tried to get a page using HttpClient, I got the exception below, the url is "http://ss.97down.info/mimi/file.php/L87S8KD.html".
> Caused by: org.apache.http.ProtocolException: Invalid header: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
> 	at org.apache.http.impl.io.AbstractMessageParser.parseHeaders(AbstractMessageParser.java:226)
> 	at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:261)
> 	at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:284)
> 	at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:247)
> 	at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:219)
> 	at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:300)
> 	at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:127)
> 	at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:645)
> 	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:464)
> 	at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
> The page can be displayed normally in IE and Chrome. I traced the source code of HttpCore, and find this line in BufferedHeader.java, 
>  int colon = buffer.indexOf(':');
> I found that except other normal headers, there was really an odd header, the value is :
> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
> The format is ugly, there is no colon in it, and caused an exception.
> The orginal header the Chrome gets is like:
> HTTP/1.1 200 OK
> Connection: close
> Date: Sat, 04 Sep 2010 08:46:38 GMT
> Server: Microsoft-IIS/6.0
> X-Powered-By: ASP.NET
> X-Powered-By: PHP/5.2.8
> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
> Content-type: text/html
> Yes, it's malformated, but Chrome parsed it as:
> Connection:close
> Content-type:text/html
> Date:Sat, 04 Sep 2010 08:46:38 GMT
> Server:Microsoft-IIS/6.0
> X-Powered-By:ASP.NET
> PHP/5.2.8
> I then and a snippet in the for loop of the parseHeaders method of the class AbstractMessageParser.java to ignore this type of error.
>  if(current.indexOf(':')<=0){
>                 continue;
>  }
> It works for me, I hope someone can fix this problem.
> Thanks!

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org


[jira] [Commented] (HTTPCORE-274) Invalid Header

Posted by "yangqing (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HTTPCORE-274?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13097729#comment-13097729 ] 

yangqing commented on HTTPCORE-274:
-----------------------------------

I have read the section, it is not convenient for my purpose. I agree we should not eat this exception in HC, but can we have a simple way to ignore all malformed headers? For e.g., a parameter in some top level classes, or a simple way to plugin a LineParser not to implement a whole hierarchy.  

> Invalid Header
> --------------
>
>                 Key: HTTPCORE-274
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-274
>             Project: HttpComponents HttpCore
>          Issue Type: Bug
>          Components: HttpCore
>    Affects Versions: 4.2-alpha1
>         Environment: windows7, ie9, chrome13, jdk7
>            Reporter: yangqing
>            Priority: Minor
>
> When I tried to get a page using HttpClient, I got the exception below, the url is "http://ss.97down.info/mimi/file.php/L87S8KD.html".
> Caused by: org.apache.http.ProtocolException: Invalid header: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
> 	at org.apache.http.impl.io.AbstractMessageParser.parseHeaders(AbstractMessageParser.java:226)
> 	at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:261)
> 	at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:284)
> 	at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:247)
> 	at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:219)
> 	at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:300)
> 	at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:127)
> 	at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:645)
> 	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:464)
> 	at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
> The page can be displayed normally in IE and Chrome. I traced the source code of HttpCore, and find this line in BufferedHeader.java, 
>  int colon = buffer.indexOf(':');
> I found that except other normal headers, there was really an odd header, the value is :
> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
> The format is ugly, there is no colon in it, and caused an exception.
> The orginal header the Chrome gets is like:
> HTTP/1.1 200 OK
> Connection: close
> Date: Sat, 04 Sep 2010 08:46:38 GMT
> Server: Microsoft-IIS/6.0
> X-Powered-By: ASP.NET
> X-Powered-By: PHP/5.2.8
> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
> Content-type: text/html
> Yes, it's malformated, but Chrome parsed it as:
> Connection:close
> Content-type:text/html
> Date:Sat, 04 Sep 2010 08:46:38 GMT
> Server:Microsoft-IIS/6.0
> X-Powered-By:ASP.NET
> PHP/5.2.8
> I then and a snippet in the for loop of the parseHeaders method of the class AbstractMessageParser.java to ignore this type of error.
>  if(current.indexOf(':')<=0){
>                 continue;
>  }
> It works for me, I hope someone can fix this problem.
> Thanks!

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org


[jira] [Resolved] (HTTPCORE-274) Invalid Header

Posted by "Oleg Kalnichevski (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HTTPCORE-274?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Oleg Kalnichevski resolved HTTPCORE-274.
----------------------------------------

    Resolution: Invalid

We cannot log exceptions in HttpCore because it does not depend on any particular logging toolkit. Besides, one may actually want to have such requests rejected as invalid as the header is clearly in violation of the HTTP spec. However, one can employ a custom application specific response parser in order handle such messages more gracefully.

Yangqing, please see this section of the HttpClient tutorial:

http://hc.apache.org/httpcomponents-client-ga/tutorial/html/advanced.html#d4e1341

Oleg

> Invalid Header
> --------------
>
>                 Key: HTTPCORE-274
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-274
>             Project: HttpComponents HttpCore
>          Issue Type: Bug
>          Components: HttpCore
>    Affects Versions: 4.2-alpha1
>         Environment: windows7, ie9, chrome13, jdk7
>            Reporter: yangqing
>            Priority: Minor
>
> When I tried to get a page using HttpClient, I got the exception below, the url is "http://ss.97down.info/mimi/file.php/L87S8KD.html".
> Caused by: org.apache.http.ProtocolException: Invalid header: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
> 	at org.apache.http.impl.io.AbstractMessageParser.parseHeaders(AbstractMessageParser.java:226)
> 	at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:261)
> 	at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:284)
> 	at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:247)
> 	at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:219)
> 	at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:300)
> 	at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:127)
> 	at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:645)
> 	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:464)
> 	at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
> The page can be displayed normally in IE and Chrome. I traced the source code of HttpCore, and find this line in BufferedHeader.java, 
>  int colon = buffer.indexOf(':');
> I found that except other normal headers, there was really an odd header, the value is :
> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
> The format is ugly, there is no colon in it, and caused an exception.
> The orginal header the Chrome gets is like:
> HTTP/1.1 200 OK
> Connection: close
> Date: Sat, 04 Sep 2010 08:46:38 GMT
> Server: Microsoft-IIS/6.0
> X-Powered-By: ASP.NET
> X-Powered-By: PHP/5.2.8
> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
> Content-type: text/html
> Yes, it's malformated, but Chrome parsed it as:
> Connection:close
> Content-type:text/html
> Date:Sat, 04 Sep 2010 08:46:38 GMT
> Server:Microsoft-IIS/6.0
> X-Powered-By:ASP.NET
> PHP/5.2.8
> I then and a snippet in the for loop of the parseHeaders method of the class AbstractMessageParser.java to ignore this type of error.
>  if(current.indexOf(':')<=0){
>                 continue;
>  }
> It works for me, I hope someone can fix this problem.
> Thanks!

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org