Web应用程序如何在HTTP代理或负载均衡器后还原原始URL?

时间:2013-07-04 13:17:27

标签: http web proxy load-balancing w3c

您部署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

0 个答案:

没有答案