2012-08-22 47 views
0

我正尝试构建一个Java EE应用程序,该应用程序提取某个会话cookie,将其作为HTTP头添加到请求中,然后将用户转发到第三方URL在请求中带有这个头部变量。如何将自定义头变量添加到请求并重定向用户

我使用this example作为参考。

我已经实现了FakeHeadersRequestSimpleFilter但是不知道如何使用这个新的头变量将请求重定向到不同的URL。我应该创建一个转发请求的Servlet吗?也许使用Apache HTTP客户端?

有人可以帮我完成这个难题吗?

回答

1

一旦你在服务器端并包装你的请求,使用RequestDispatcher.forward()与该包装的请求。

您要转发到的资源(任何Servlet,JSP)将“看到”新的标题。

不要试图在客户端重定向(HTTP 302),使客户端发送自定义标头AFAIK并不容易。

+0

嗨,看起来像RequestDispatcher期待的资源是相对于我的servlet位置,我想转发请求到一个全新的URL。所以RequestDispatcher在这种情况下似乎不起作用。我错过了什么? – Joly

+0

您可能想澄清您是希望客户端执行第二个请求,还是确定您的服务器是否执行了该请求。对于后一种情况,Apache http客户端将是一个不错的选择,显然,您可以使用该方法调整任何和所有标头。但是它会成为你的服务器,作为对第三方服务器的请求的发起者。 – mgaert

+0

我很高兴让服务器处理这个问题。我会用http客户端去... – Joly

0

无论您使用何种语言或框架,都无法重定向到设置了自定义标题的页面。换句话说,无法触发HTTP重定向并导致客户端(浏览器)添加自定义标头。

您正在设置响应的自定义标题,指示浏览器重定向,而不是重定向本身。

网站指示浏览器使用自定义标题发出HTTP请求的唯一方法是使用Javascript和XMLHttpRequest对象。

你能想到的最接近的是作为代理。没有重定向。

相关问题