2012-01-12 109 views
1

我有两个网站,A和B.当我打开网站A时,我自动重定向到网站B.搜索重定向的网站路径

什么是功能,我可以检查什么是从哪个网站的重定向的完整路径?

我试图开始:

 logger.info(request.getPathInfo()); 
     logger.info(request.getPathTranslated()); 
     logger.info(request.getServletPath()); 
     logger.info(request.getLocalName()); 
     logger.info(request.getRemoteAddr()); 
     logger.info(request.getRemoteHost()); 
     logger.info(request.getRequestURI()); 
     logger.info(request.getServerName()); 

但他们都不是正确的。

对于重定向我使用response.sendRedirect内部控制器。

感谢您的帮助。

回答

3

您可以尝试使用可选referer头:

request.getHeader("referer"); 

但要注意的是,这可能并不总是被填充(特别是IE)是很重要的。

一个更好的解决方案,如果你在控制这两个网站,就是在你做重定向时以某种方式传递这个值。例如,作为GET或POST参数。

编辑:

正如上文所述,您可以将查询字符串的重定向URL。例如,你可能会尝试这样的事情:

String redirectUrl = "http://my.redirect.com/"; 

redirectUrl += "?referer="; 
redirectUrl += URLEncoder.encode(request.getRequestURL().toString(), "UTF-8"); 

然后,你可以从另一边的请求拉出来。

以此为出发点。您可能需要手动附加其他查询参数,这些参数可能不是getRequestURL()输出的一部分。

+1

供参考给任何人想知道:标题名称应该是拼错的。它不完全是故意的,但是在HTTP规范的第一个版本中有一个错误,现在我们 – 2012-01-12 13:46:05

+0

谢谢你的帮忙 - 但是因为我知道request.getHeader(“referer”)只有当我点击一个链接,然后我才会被重定向,但是在Controller里面使用response.sendRedirect,然后这种方法不给我:( – Ilkar 2012-01-12 13:48:21

+0

@Ilkar请参阅编辑 – 2012-01-12 14:00:55

1

这些都不会让您将页面重定向到当前页面。你可以尝试的是:

String refererPage = request.getHeader("referer"); 

但是请记住,这也是浏览器的依赖,并不总是存在。

+0

感谢对帮助 - 但我知道request.getHeader(“引荐”),只有当我点击一个链接,然后我将被重定向工作。但是在控制器里面使用response.sendRedirect,那么这个方法什么都不给我:( – Ilkar 2012-01-12 13:47:57

+0

)如果你有2种选择通过引用URL发送:1.发送它作为GET查询参数2.设置一个cookie在姊妹域中工作)' – anubhava 2012-01-12 14:16:43

0

试试这个

request.getHeader("referer"); 
+0

谢谢你的帮助 - 但是因为我知道request.getHeader(“referer”)只在我点击一个链接然后我会被重定向的情况下工作,但是ii使用响应。sendRedirect在控制器里面,然后这个方法给我什么都没有:( – Ilkar 2012-01-12 13:48:05

0

请尝试

request.getHeader("referer");