js下跳轉無referer
當前實例版本:25 0 評論 892 瀏覽 發布於:2013年11月18 20:32 編輯+新實例

HTTP Header referer這玩意主要是告訴人們我是從哪兒來的,就是告訴人家我是從哪個頁麵過來的,可以用於統計訪問本網站的用戶來源,也可以用來防盜鏈。獲取這個東西最好的方式是js,如果在服務器端獲取(PHP方法如:$_SERVER['HTTP_REFERER']) 不靠譜,人家可以偽造,用js獲取最好,人家很難偽造,
方法:利用js的 document.referer 方法可以準確地判斷網頁的真實來路。 目前百度統計,google ads統計,CNZZ統計,都是用的這個方法。防盜鏈也很簡單了,js裡判斷來路url如果不是本站不顯示圖片。
眾所周知,我們web開發人員痛恨IE瀏覽器,因為IE不支持標準,標準外的默認行為又和其他瀏覽器經常不一致:
在IE中用javascript做跳轉,比如用window.location.href = “”; google如果使用document.referrer無法取到瀏覽器請求的HTTP referrer,因為IE清空了
而其他主流瀏覽器Firefox和Chrome都會保留referrer,冇辦法,這意味著IE又要享受“部長級”特殊待遇了:
以下代碼可以解決ie的這個問題:
//檢測如果是ie瀏覽器,則手動的給增加一個referer
這樣的原理就是給IE瀏覽器的頁麵偷偷加了個鏈接,然後自動點這個鏈接,於是referrer就能保留了。

  1. var url = 'http://www.gitbook.net';   
  2. if (/MSIE (\d+\.\d+);/.test(navigator.userAgent) || /MSIE(\d+\.\d+);/.test(navigator.userAgent))   
  3. {   
  4.     var referLink = document.createElement('a');   
  5.     referLink.href = url;   
  6.     document.body.appendChild(referLink);   
  7.     referLink.click();   
  8. }   
  9. else  
  10. {   
  11.     location.href = url;   
  12. }