2012-01-12 170 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");