2013-10-23 78 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(); 

我知道这个问题是旧的。但也许我的回答会帮助别人。

相关问题