如何在JSP中获得重写的URL?

如何在JSP中获得重写的URL?,jsp,url-rewriting,Jsp,Url Rewriting,我有一个JSP页面,地址如下: 当我输出request.getRequestURL()时,我得到了完全不同的结果: 请注意,域已更改为IP,并且缺少/foo/bar。如何获取浏览器使用JSP请求的真实URL?如果Java EE服务器前面有一个代理(如Apache HTTPD),则可能发生这种情况。特定代理可以(应该)将原始请求URL设置为请求头。至少,所有自尊心强的代理人都会这么做 您可以按如下方式爬过所有请求头以找到它: for (String name : Collections.lis

我有一个JSP页面,地址如下:

当我输出
request.getRequestURL()
时,我得到了完全不同的结果:


请注意,域已更改为IP,并且缺少
/foo/bar
。如何获取浏览器使用JSP请求的真实URL?

如果Java EE服务器前面有一个代理(如Apache HTTPD),则可能发生这种情况。特定代理可以(应该)将原始请求URL设置为请求头。至少,所有自尊心强的代理人都会这么做

您可以按如下方式爬过所有请求头以找到它:

for (String name : Collections.list(request.getHeaderNames())) {
    System.out.println(name + "=" + Collections.list(request.getHeaders(name)));
}

您可以使用以下内容获取不包括域的重写URL:

String rewrittenURL = request.getHeader("REDIRECT_URL");

您是否在JavaEE服务器前使用代理?如果是这样,那个特定的代理可以(应该)设置一些特定的请求头。我不完全确定,因为它不是我的服务器。我会检查标题,看看是否有什么有用的地方。@BalusC事实证明你是对的。有一个代理,它给了我一个重写url的标题。谢谢你的提示!很高兴我能帮助你。我将其作为一个答案重新发布(我最初将其作为一个评论发布,因为不清楚您是否使用了代理,但至少症状是可以识别的:)。