如果你的应用运行在一个代理或者负载后面在云上,请求信息或许改变了。你的应用或许正在运行在 10.10.10.10:8080,但是HTTP客户端只能看到example.org.
RFC7239 "Forwarded Headers"定义了Forwarded HTTP 请求头;代理能够使用这个head来提供原始请求的信息。你可以配置你的应用程序读这些headers并且自动使用这些信息当创建连接和发送他们到客户端在HTTP 302响应、JSON或HTML页面。这里有一个非标准的headers,像这样X-
Forwarded-Host, X-Forwarded-Port, X-Forwarded-Proto, X-Forwarded-Ssl, and X-Forwarded-Prefix
假如代理添加了通用的 X-Forwarded-For 和 X-Forwarded-Proto ,设置server.forward-headers-strategy 到 NATIVE足够支持。Web服务器自己支持这些本身的功能,你能核对他们的文档了解关于特定的行为。
假如不能满足要求,Spring Framework提供了 ForwardedHeaderFilter 。你能注册它作为servlet过滤器在你的应用中设置 server.forward-headers-strategy 为 FRAMEWORK。
下面是Tomcat的配置:
引自: