On 09/08/2024 09:28, Patil, Tushar wrote:
Hi Tomcat team,
Earlier in the 9.x.x series, the pipe(|) character was allowed with the AJP 
connector without doing any configuration change at our end, but now in 
10.1.23, it is giving an error.
Is this bug from the Tomcat side, or do we need any configuration changes at 
our end?

This is an application bug at your end. '|' is not a valid character in a URL. It has to be %nn encoded if you want to use it.

Mark




--
Thanks and Regards,
Tushar Patil
________________________________
From: Christopher Schultz <ch...@christopherschultz.net>
Sent: Thursday, August 8, 2024 11:51 PM
To: users@tomcat.apache.org <users@tomcat.apache.org>
Subject: Re: Upgraded Tomcat 9.0.82 to 10.1.23 getting HTTP response 400 for 
pipe characters in URL

[You don't often get email from ch...@christopherschultz.net. Learn why this is 
important at https://aka.ms/LearnAboutSenderIdentification ]

Chuck,

On 8/8/24 09:58, Chuck Caldarale wrote:

On Aug 8, 2024, at 08:46, Christopher Schultz <ch...@christopherschultz.net> 
wrote:

On 8/8/24 05:20, Patil, Tushar wrote:
In older version [9.0.82]:
      <Connector port="8010" protocol="org.apache.coyote.ajp.AjpNioProtocol" secure="false" 
requiredSecret="388438" address="127.0.0.1"
                 tomcatAuthentication="false" enableLookups="false" maxPostSize="-1" 
maxSavePostSize="8388608" maxParameterCount="-1"
                 useBodyEncodingForURI="true" URIEncoding="UTF-8" backlog="100" 
packetSize="8192"
                 maxThreads="320" minSpareThreads="8"/>
In newer version[10.1.23]:
<Connector port="8010" protocol="org.apache.coyote.ajp.AjpNioProtocol" secure="false" 
requiredSecret="904746" address="127.0.0.1"
                 tomcatAuthentication="false" enableLookups="false" maxPostSize="-1" 
maxSavePostSize="8388608" maxParameterCount="-1"
                 useBodyEncodingForURI="true" URIEncoding="UTF-8" acceptCount="100" 
packetSize="8192"
                 maxThreads="320" minSpareThreads="8" discardFacades="false"/>

IMPORTANT NOTE: You have posted your "requiredSecret" value and may want to 
change that now that it is public.

I'm not sure why you would not have needed these in the past, but you might need to add 
relaxedPathChars="|" in your <Connector> configuration to allow these pipes.

If the pipes are also appearing in your query string, you may need to set 
relaxedQueryChars to the same value.


The AJP connector documentation does not show relaxedPathChars nor 
relaxedQueryChars as valid configuration items - these are only in the HTTP/1.1 
connector. I thought that the AJP connector expected the front end to do URL 
validation.

+1

I hadn't noticed the AJP in there until after I had written most of the
reply, then went back to add info about the secret and reverse proxy. Oops.

-chris

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to