2008-12-31 75 views
6

它似乎遇到了Internet Explorer 7的問題。 我有一個HTML頁面,該頁面已鏈接到另一臺服務器上的文件。我鏈接的服務器檢查請求的引用者,如果引用者有效,它允許訪問資源。它在firefox 2和3中工作正常(因爲我的html頁面所在的服務器是有效的引用程序),但在Internet Explorer中它不起作用,另一臺服務器拒絕我的資源(生成http 403錯誤)。我正在做一些搜索,並且偶然發現了這個http://support.microsoft.com/kb/178066,並且我已經嘗試了https和http中的html頁面,以及我連接到的服務器的相同內容,但是我什麼也得不到Internet Explorer。我能做些什麼來解決這個問題?Internet Explorer http referer問題

謝謝

+0

你有一個網址,我們可以測試? – scunliffe 2008-12-31 13:47:13

回答

3

無論如何,您可能都想使用不同的機制。推薦人很容易被欺騙。檢查推薦人真的不是一個好的安全解決方案,如果他們會讓你這樣頭痛,也許你想找到另一種方式。

例如,生成第一頁的服務器可以將授權令牌添加到第二服務器的URL,第二服務器可以檢查令牌是否有效。這樣,所有的細節都在您的控制之下,您唯一指望的瀏覽器行爲是將完整的URL發送到第二臺服務器。

-3

禁用防火牆和防病毒/或反間諜軟件檢查和看看是否有幫助。我知道這可能聽起來很糟糕,但我親眼看到很多情況下,當這個建議被採納時,問題奇蹟般地消失了。

他們往往有一個過分熱心的想法有時什麼是「安全」,並打破瀏覽器行爲的進展。 (如果您有AVG並且遇到電子郵件問題(pop3),請關閉AVG,並且看到電子郵件奇蹟般地恢復到工作狀態)

+0

如果您閱讀鏈接的kb文章,您會發現這是IE的一個已知問題,不受其他軟件的影響。 – Sparr 2008-12-31 03:05:10

+0

啊,不,kb文章抱怨跨越安全邊界,從OP可以看出問題甚至發生在同一級別的證券上,我從經驗中看到AV軟件篡改並導致這種行爲! – 2008-12-31 03:08:57

+0

(我*在* IE中使用了引用鏈接,僅在http:// *和*中有它們的工作,所以我並沒有完全做到這一點..) – 2008-12-31 03:13:25

13

你如何「進入」有問題的文件?

如果您使用JAVASCRIPT訪問該文件,IE將失敗。

IE已經有了一個主要的錯誤,因爲在這之後的黎明。

e.g. document.location.href = 'myNewPage.html'; //FAILS to pass referer in IE 

Bug #421 over on Web Bug Track

不會被固定在IE8要麼!:-(

2

我已經解決了它,包括在

session_start(); 
if($_SERVER['SERVER_PORT'] == 443) 
    $http = 'https://'; 
else 
    $http = 'http://'; 

$adress = $http.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 

$_SESSION['referer'] = $_SESSION['current_page']; 
$_SESSION['current_page'] = $adress; 
$_SERVER['HTTP_REFERER'] = $_SESSION['referer']; 
1

我不使用IE7,所以我不能檢查這個項目的所有網頁的代碼..但我想這沒有問題應該工作:

<script type="text/javascript"> 
     document.location= "www.your-server.com/your_page.html?referrer=" + document.location.href; 
</script> 

,比第二臺服務器上,您可以檢查

引薦參數,而不是依賴於瀏覽器是否發送引薦與否的值。