2010-09-02 99 views
2

我們正在註冊一個使用http-referer作爲身份驗證(我知道是壞主意)的在線資源,以證明請求來自我們的Intranet(IP地址不可用於此)有一個更高級別的代理)。通過重定向更改http-referer

不幸的是,他們的系統可能需要一個特定的引用URL而不是域名。這意味着當我們想要從不同的頁面鏈接到資源時,我們需要或者向他們註冊另一個URL或者鏈接到有效的頁面,他們必須再次點擊。

如果我們要沿着這條路走下去,我想使它一樣不引人注意越好,所以想知道什麼是最好的辦法是實現以下目標:

  1. http://intranet/somerandomurl有一個鏈接到
  2. http://intranet/AuthorisedUrl這就需要將引薦到
  3. http://externalsite/

有沒有辦法做到這一點沒有字面上希ng人點擊鏈接? (如果有幫助的話,絕大多數瀏覽器都是IE6或IE7,如果有些需要點擊鏈接,但我可以使用JS,大多數情況下我都可以)。

回答

2

戴上鍊接2.此代碼對於啓用JavaScript,

<script type="text/javascript"> 

window.location = "http://example.com/" 

</script> 

這將他們只要它執行重定向到http://example.com/。儘早在<head>以內,以便在頁面加載儘可能早的時候發生重定向

然後,只需在頁面上爲禁用JavaScript的用戶設置手動鏈接。

無論哪種方式,鏈接2將是外部引用的引用者。

(警告:這是認證的一個非常,非常不安全的方法)


編輯:它看起來像有一個已知的問題與JavaScript重定向後,一些版本的IE不傳遞Referer頭。這是解決方法:http://webbugtrack.blogspot.com/2008/11/bug-421-ie-fails-to-pass-http-referer.html

+0

我在想它必須是客戶端JS。有沒有瀏覽器不一致的問題,雖然有些改變了引用者的想法,但其他人不是? (是的,我同意這個警告,但它不是我們的系統,所以我無能爲力)。 – Chao 2010-09-02 14:54:23

+0

不應該有任何瀏覽器不一致,但你可以在這裏測試它:http://htmlto.com/redirect/1.html。點擊該鏈接會將您帶到2.html,這會將Javascript重定向到3.php,該頁面設置爲回顯HTTP_REFERER。它應該說2.html;如果它曾經說過1.html,那麼你的瀏覽器不一致。 – Yahel 2010-09-02 15:06:47

+0

我站好了; IE不會將JavaScript_referer從JavaScript重定向傳遞出去;請參閱我的編輯修復。 – Yahel 2010-09-02 15:13:47