Hi ,

Thank you for your reply. 
Request chain:
Client → springcloud gateway(12.52.41.10:8080) → Tomcat (127.0.0.1:8001)
The  springcloud gateway configuration has added the X-Forwarded-* series 
of headers. 
2. Regarding the format:
The original request is a string dumped from the inputBuffer of Tomcat.
There may be issues with line breaks when pasting, but in the actual request, 
each header is on a separate line. 


3. Version Information:
- Spring Boot: 2.3.2.RELEASE
- Embedded Tomcat: 9.0.37
- JDK: 1.8


Regarding the upgrade:
Due to the constraints of the production environment, an upgrade cannot be 
carried out in the short term.
I would like to first confirm if this is a known issue or if there is a 
workaround? 


Supplementary phenomena:
- The issue occurs sporadically and not with every request.
- When the X-Forwarded-For header is missing, it is always accompanied by a 
repeated Host field.
- It is suspected that the problem lies in the header boundary judgment during 
the parsing of Http11InputBuffer. 


Could you guide me on how to further debug or provide the relevant issue 
link? 
Thank you!




扛起一片天!✨
[email protected]



        



         原始邮件
         
       
发件人:Christopher Schultz <[email protected]&gt;
发件时间:2026年4月1日 21:20
收件人:users <[email protected]&gt;
主题:Re: Tomcat 9.0.37 - Request Header Parsing Exception: X-Forwarded-For Lost 
and Host Field Duplicated Resulting in 400 Bad Request



       扛起一片天!✨,

On&nbsp;4/1/26&nbsp;5:33&nbsp;AM,&nbsp;扛起一片天!✨&nbsp;wrote:
&gt;&nbsp;Tomcat&nbsp;version:&nbsp;9.0.37
&gt;&nbsp;Operating&nbsp;system:&nbsp;windows&nbsp;11&amp;nbsp;
&gt;&nbsp;JDK&nbsp;version:&nbsp;OpenJDK&nbsp;1.8
&gt;&nbsp;Problem&nbsp;Description:
&gt;&nbsp;During&nbsp;the&nbsp;debugging&nbsp;process,&nbsp;it&nbsp;was&nbsp;found&nbsp;that&nbsp;in&nbsp;the&nbsp;prepareRequest&nbsp;stage&nbsp;when&nbsp;Tomcat&nbsp;parses&nbsp;the&nbsp;HTTP&nbsp;request&nbsp;headers,&nbsp;the&nbsp;X-Forwarded-For&nbsp;field&nbsp;is&nbsp;lost,&nbsp;and&nbsp;at&nbsp;the&nbsp;same&nbsp;time,&nbsp;there&nbsp;are&nbsp;duplicate&nbsp;Host&nbsp;fields.&amp;nbsp;
&gt;&nbsp;The&nbsp;original&nbsp;request&nbsp;stream&nbsp;(from&nbsp;inputBuffer):&nbsp;--------------------------------------------------
&gt;&nbsp;GET&nbsp;/v1/webapi/server/current_time?&nbsp;t=1774661427160&nbsp;HTTP/1.1&nbsp;isdisplaypage:true
&gt;&nbsp;tenantid:
&gt;&nbsp;groupid:
&gt;&nbsp;unity-access-token:f7e20127-1b55-4e1e-a0e2-d15b2caa112ee
&gt;&nbsp;devicetype:
&gt;&nbsp;user-agent:HolliView
&gt;&nbsp;accept:application/json,&nbsp;text/plain,&nbsp;*/*
&gt;&nbsp;content-type:application/json
&gt;&nbsp;token:f7e20127-1b55-4e1e-a0e2-d15b2caa112e
&gt;&nbsp;projectid:
&gt;&nbsp;Referer:&nbsp;http://12.52.41.10:8080/hv-visio/display.html?&nbsp;...
&gt;&nbsp;accept-encoding:gzip,&nbsp;deflate
&gt;&nbsp;accept-language:zh-CN
&gt;&nbsp;forwarded:proto=http;&nbsp;host="12.52.41.10:8080";&nbsp;for="12.52.41.20:56611"
&gt;&nbsp;x-forwarded-for:&nbsp;12.52.41.200&nbsp;x-forwarded-proto:http
&gt;&nbsp;x-forwarded-prefix:/hv-data
&gt;&nbsp;x-forwarded-port:8080
&gt;&nbsp;x-forwarded-host:&nbsp;12.52.41.10:8080
&gt;&nbsp;host:&nbsp;127.0.0.1:80011&nbsp;content-length:0
&gt;&nbsp;--------------------------------------------------
&gt;&nbsp;
&gt;&nbsp;
&gt;&nbsp;Actual&nbsp;parsing&nbsp;result&nbsp;(MimeHeaders):
&gt;&nbsp;-&nbsp;X-Forwarded-For&nbsp;field:&nbsp;Missing&nbsp;(does&nbsp;not&nbsp;exist)
&gt;&nbsp;-&nbsp;Host&nbsp;field:&nbsp;Appears&nbsp;twice&nbsp;(repeated)&amp;nbsp;
&gt;&nbsp;headers=@MimeHeaderField[][
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;@MimeHeaderField[
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;nameB=@MessageBytes[isdisplaypage],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;valueB=@MessageBytes[true],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;@MimeHeaderField[
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;nameB=@MessageBytes[tenantid],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;valueB=@MessageBytes[],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;@MimeHeaderField[
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;nameB=@MessageBytes[accept],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;valueB=@MessageBytes[application/json,&nbsp;text/plain,&nbsp;*/*],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;@MimeHeaderField[
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;nameB=@MessageBytes[unity-access-token],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;valueB=@MessageBytes[f7e20127-1b55-4e1e-a0e2-d15b2caa112e],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;@MimeHeaderField[
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;nameB=@MessageBytes[devicetype],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;valueB=@MessageBytes[],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;@MimeHeaderField[
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;nameB=@MessageBytes[user-agent],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;valueB=@MessageBytes[HolliView],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;@MimeHeaderField[
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;nameB=@MessageBytes[accept],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;valueB=@MessageBytes[application/json,&nbsp;text/plain,&nbsp;*/*],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;@MimeHeaderField[
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;nameB=@MessageBytes[content-type],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;valueB=@MessageBytes[application/json],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;@MimeHeaderField[
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;nameB=@MessageBytes[token],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;valueB=@MessageBytes[f7e20127-1b55-4e1e-a0e2-d15b2caa112e],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;@MimeHeaderField[
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;nameB=@MessageBytes[projectid],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;valueB=@MessageBytes[],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;@MimeHeaderField[
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;nameB=@MessageBytes[referer],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;valueB=@MessageBytes[http://12.52.41.10:8080/hv-visio/display.html?tag=displays/%E7%AC%AC%E5%9B%9B%E5%87%80%E5%8C%96%E5%8E%82%E6%B5%81%E7%A8%8B%E5%9B%BE/%E8%84%B1%E7%A1%AB%E8%84%B1%E6%B0%B4%E8%A3%85%E7%BD%AE2/%E8%84%B1%E6%B0%B4%E8%A3%85%E7%BD%AE.json],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;@MimeHeaderField[
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;nameB=@MessageBytes[accept-encoding],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;valueB=@MessageBytes[gzip,&nbsp;deflate],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;@MimeHeaderField[
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;nameB=@MessageBytes[accept-language],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;valueB=@MessageBytes[zh-CN],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;@MimeHeaderField[
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;nameB=@MessageBytes[forwarded],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;valueB=@MessageBytes[proto=http;host="12.52.41.10:8080";for="12.52.41.20:56611"],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;@MimeHeaderField[
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;nameB=@MessageBytes[host],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;valueB=@MessageBytes[127.0.0.1:8001],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;@MimeHeaderField[
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;nameB=@MessageBytes[x-forwarded-proto],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;valueB=@MessageBytes[http],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;@MimeHeaderField[
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;nameB=@MessageBytes[x-forwarded-prefix],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;valueB=@MessageBytes[/hv-data],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;@MimeHeaderField[
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;nameB=@MessageBytes[x-forwarded-port],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;valueB=@MessageBytes[8080],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;@MimeHeaderField[
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;nameB=@MessageBytes[x-forwarded-host],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;valueB=@MessageBytes[12.52.41.10:8080],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;@MimeHeaderField[
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;nameB=@MessageBytes[host],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;valueB=@MessageBytes[127.0.0.1:8001],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;@MimeHeaderField[
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;nameB=@MessageBytes[content-length],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;valueB=@MessageBytes[0],
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;]
&gt;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;&amp;nbsp;&nbsp;],
&gt;&nbsp;
&gt;&nbsp;
&gt;&nbsp;
&gt;&nbsp;
&gt;&nbsp;Key&nbsp;observations:
&gt;&nbsp;1.&nbsp;The&nbsp;original&nbsp;request&nbsp;contains&nbsp;x-forwarded-for:&nbsp;12.52.41.200.
&gt;&nbsp;2.&nbsp;The&nbsp;original&nbsp;request&nbsp;has&nbsp;host:&nbsp;127.0.0.1:8001&nbsp;only&nbsp;once.
&gt;&nbsp;3.&nbsp;However,&nbsp;after&nbsp;parsing,&nbsp;X-Forwarded-For&nbsp;is&nbsp;lost&nbsp;and&nbsp;Host&nbsp;becomes&nbsp;two.&amp;nbsp;
&gt;&nbsp;4.&nbsp;It&nbsp;doesn't&nbsp;occur&nbsp;every&nbsp;time.
&gt;&nbsp;5.The&nbsp;Tomcat&nbsp;that&nbsp;is&nbsp;embedded&nbsp;within&nbsp;the&nbsp;Spring&nbsp;Boot
&gt;&nbsp;6.&nbsp;Trigger&nbsp;badRequest("http11processor.request.multipleHosts");
&gt;&nbsp;7.There&nbsp;are&nbsp;no&nbsp;other&nbsp;additional&nbsp;configurations.
&gt;&nbsp;
&gt;&nbsp;
&gt;&nbsp;Investigations&nbsp;completed:
&gt;&nbsp;-&nbsp;Confirmed&nbsp;that&nbsp;the&nbsp;header&nbsp;is&nbsp;included&nbsp;in&nbsp;the&nbsp;request&nbsp;flow&nbsp;before&nbsp;it&nbsp;reaches&nbsp;Tomcat.
&gt;&nbsp;-&nbsp;Configured&nbsp;with&nbsp;RemoteIpValve,&nbsp;but&nbsp;the&nbsp;issue&nbsp;occurred&nbsp;during&nbsp;the&nbsp;parsing&nbsp;stage.&amp;nbsp;

What&nbsp;components&nbsp;are&nbsp;in&nbsp;the&nbsp;mix&nbsp;before&nbsp;the&nbsp;request&nbsp;reaches&nbsp;Tomcat?&nbsp;The&nbsp;
formatting&nbsp;is&nbsp;a&nbsp;little&nbsp;odd&nbsp;in&nbsp;your&nbsp;original&nbsp;posting&nbsp;(e.g.&nbsp;the&nbsp;
X-Forwarded-For&nbsp;and&nbsp;X-Forwarded-Proto&nbsp;headers&nbsp;appear&nbsp;to&nbsp;be&nbsp;on&nbsp;the&nbsp;same&nbsp;
line).

&gt;&nbsp;1.&nbsp;Is&nbsp;this&nbsp;a&nbsp;known&nbsp;parsing&nbsp;issue?
&gt;&nbsp;2.&nbsp;Are&nbsp;there&nbsp;any&nbsp;configuration&nbsp;items&nbsp;that&nbsp;would&nbsp;affect&nbsp;the&nbsp;header&nbsp;parsing&nbsp;behavior?
&gt;&nbsp;3.&nbsp;How&nbsp;can&nbsp;we&nbsp;further&nbsp;determine&nbsp;whether&nbsp;it&nbsp;is&nbsp;a&nbsp;parsing&nbsp;logic&nbsp;issue&nbsp;or&nbsp;caused&nbsp;by&nbsp;pre-processing?&amp;nbsp;

This&nbsp;is&nbsp;a&nbsp;really&nbsp;old&nbsp;version&nbsp;of&nbsp;Tomcat.&nbsp;Can&nbsp;you...

a.&nbsp;Upgrade&nbsp;to&nbsp;a&nbsp;later&nbsp;version&nbsp;of&nbsp;Spring&nbsp;Boot
b.&nbsp;Upgrade&nbsp;the&nbsp;Tomcat&nbsp;used&nbsp;by&nbsp;Spring&nbsp;Boot

?

-chris


---------------------------------------------------------------------
To&nbsp;unsubscribe,&nbsp;e-mail:&nbsp;[email protected]
For&nbsp;additional&nbsp;commands,&nbsp;e-mail:&nbsp;[email protected]

Reply via email to