2015-06-20 117 views
2

最終我需要知道什麼域名託管我的JavaScript文件之一。我已經閱讀並經歷了第一手$_SERVER['HTTP_REFERER']不可靠。我測試的前3個瀏覽器/計算機組合中的一個沒有發送HTTP_REFERER,我知道它可能被欺騙。我使用兩種JavaScript方法實現了不同的解決方案。

document.referrer 

window.location.href 

我用前者來獲得,其中有人點擊我的鏈接的一個窗口的URL。我使用前者來查看我的javascript文件包含在哪個域中。我已經對它進行了一些測試,並且它非常好地從瀏覽器中抓取了url並且沒有打嗝。我的問題是,這兩種javascript方法是可靠的嗎?他們是否每次都會從瀏覽器返回url或者是否有使用我尚未遇到的$_SERVER['HTTP_REFERER']的警告?

+2

'document.referrer'使用與'HTTP_REFERER'相同的來自客戶端的信息,因此它們都可以用相同的方式欺騙​​。 – Barmar

+1

這些都不會顯示Javascript文件的位置。 'window.location.href'是使用JS文件的網頁的URL。 'document.referrer'是包含他們遵循的鏈接的頁面。 – Barmar

+0

我不擔心它被欺騙,只是沒有它可用。另外,我認爲HTTP_REFERER是作爲一個http頭傳遞的?不是window.location.href只是從url欄直接抓取? – Gilberg

回答

0

由於隱私問題,瀏覽器或用戶想要隱藏這些信息,您應該始終假定有關引用者URI的任何信息都將不可用(或者甚至不可靠)。

通常,從HTTPS鏈接到HTTP域時,您不會有引用者信息。檢查這個問題的詳細信息在此:

https://webmasters.stackexchange.com/questions/47405/how-can-i-pass-referrer-header-from-my-https-domain-to-http-domains

關於使用window.location.href,我會說這是在實踐中可靠的,但只是因爲它是有趣的是,客戶端將提供使取決於應用程序的正確信息將按預期行事。

請記住,這仍然是客戶端向您發送一些信息,所以它始終由瀏覽器發送給您一些正確的信息。你無法控制這一點,只要相信它將按照標準中的規定工作即可。客戶可能仍然決定隱瞞或假冒它出於任何原因。

例如,在某些情況下(如第三方包括腳本(也是隱私原因)),瀏覽器可能會選擇將其保留爲空。

+0

瀏覽器實際上是否可以將window.location.href留空?如果是這樣,你有沒有實際的例子說明它是如何完成的,或者瀏覽器將它清空了? – Gilberg

+0

有些瀏覽器(或插件和擴展)可能會這樣做,但我不相信這在實踐中發生,但我沒有檢查過。我只是認爲這些信息可靠。 –

+0

我只想指出,你永遠不能確定瀏覽器不會「搞砸」。這仍然是來自客戶端的信息,並且很好意識到這一點。 –

相關問題