2013-10-23 124 views
4

在Internet Explorer 7,8,9瀏覽器的情況下,C#的Request.UrlReferrer返回null。這是什麼原因?它的解決方案是什麼?在Internet Explorer 7,8,9瀏覽器中,Request.UrlReferrer返回「null」

頁面上有一些「單擊此處」按鈕。點擊按鈕後,新選項卡中會打開一個新的URL頁面。在打開頁面時,我使用Request.UrlReferrer將Page的url存儲在數據庫中。

對於其他瀏覽器,如Firefox,Chrome等,它工作正常。但它從未在Internet Explorer上工作過。

請幫我一把。提前致謝。

回答

2

在各種情況下,引用者可以爲空。例如,某些隱私設置(策略按比例)或插件可能會阻止發送引薦來源。它以任何方式用戶輸入,這是你不能相信的。

如果你解釋你正在做什麼以及你用什麼代碼來做,可能會給出一個實際的答案。

+0

頁面上有一些「單擊此處」按鈕。點擊按鈕後,新選項卡中會打開一個新的URL頁面。在打開頁面時,我使用Request.UrlReferrer將Page的url存儲在數據庫中。 –

+0

然後只需在新頁面的URL中添加一個參數,如'&from = pageX'。它與引用者一樣不可靠(因爲用戶可以更改它),但至少可以控制它被髮送而不管瀏覽器配置如何 – CodeCaster

+0

如果我無法傳遞任何參數,該怎麼辦?什麼可以是另一種方式? –

1

正如我在長時間RND後告訴我的,我點擊瞭解決方案,我只是用代碼闡述了這些事情。

當用document.location.href或window.open打開一個新窗口,然後在IE8或更低版本中,Request.UrlReferrer爲空,它不在IE9或Firefox或Chrome中。

的解決方案是

你在哪裏都一樣使用 document.location.href = 「/角色/索引」;

只需將下面的函數複製並粘貼到js文件中並調用該函數即可。

RedirectURL(「/ Roles/Index」);

function RedirectURL(url) { 
var a = document.createElement("a"); 
if (a.click) { 
    // HTML5 browsers and IE support click() on , early FF does not. 
    a.setAttribute("href", url); 
    a.style.display = "none"; 
    document.body.appendChild(a); 
    a.click(); 
} else { 
    // Early FF can, however, use this usual method 
    // where IE cannot with secure links. 
    window.location.href = url; 
    } 
} 

希望上述解決方案能解決問題。

0

如果使用window.open(targetUrl,「_blank」)函數在新瀏覽器標籤頁中打開頁面,UrlReferrer對於IE來說是空的 - 實際上對於我來說這個問題對於IE 11來說是可重現的,但不僅適用於老的IE版本。 下面的JavaScript代碼,讓我來解決這個問題:

var link = document.createElement("a"); 
link.href = targetUrl; 
link.target = "_about"; 
document.body.appendChild(link); 
link.click(); 

我知道這個問題是舊的。但也許我的回答會幫助別人。

相關問題