1

您部署 Web 应用程序(在我的情况下为 Java EE + Spring MVC,但我认为使用什么 Web 堆栈无关紧要)并将其隐藏在 HTTP 代理或负载平衡器后面。

代理/平衡器软件可以修复 HTTP 标头。这不是问题。

但是应用程序本身将链接放入生成的 HTML 中:

<a href="http://$HOST:$PORT/$CONTEXT/$PATH">...</a>
<a href="/$CONTEXT/$PATH">...</a>

代理/平衡器可以使用不同的$HOST:$PORT$CONTEXT部分。对于带有 JSP 的 Java EE,这段代码修复了这个问题:

<c:url value="$PATH">
${pageContext.request.contextPath}/$PATH

但我想知道 Web 框架如何获取有关用户请求的$HOST:$PORT/$CONTEXT的知识,以便它可以在 HTML 中呈现?

此信息是否提取自:

http://en.wikipedia.org/wiki/X-Forwarded-For

非标准的事实标签?它看起来像:

X-Forwarded-For: client, proxy1, proxy2, ..., proxyN

所以 Web 框架提取第二个参数(在我的示例中是proxy1,或者如果 N == 0 则为主机 IP)以提供给您$HOST:$PORT/$CONTEXT

4

0 回答 0