在Internet Explorer 7、8、9浏览器中,Request.UrlReferrer返回“null”

4

C#中的Request.UrlReferrer在Internet Explorer 7、8、9浏览器中返回null。这是为什么?有什么解决办法吗?

页面上有一些"点击此处"按钮。当点击按钮时,将在新标签页中打开一个新的url页面。在打开页面时,我使用Request.UrlReferrer将页面的url存储在数据库中。

对于Firefox、Chrome等其他浏览器,它运行良好。但它从未在Internet Explorer上工作过。

请帮我解决这个问题。

3个回答

2

在各种情况下,引荐者可能为空。例如,某些隐私设置(由政策强制执行)或插件可能会阻止发送引荐者信息。无论如何,这都是用户输入的内容,是您无法信任的东西。

如果您解释了您要做什么以及用于此目的的代码,则可以给出实际答案。


页面上有一些“点击此处”按钮。单击该按钮会在新标签页中打开一个新的URL页面。在打开页面时,我使用Request.UrlReferrer将页面的URL存储在数据库中。 - Omer Javed
然后只需向新页面的URL添加一个参数,例如&from=pageX。它与引荐者一样不可靠(因为用户可以更改它),但至少您可以控制它在浏览器配置不考虑的情况下发送。 - CodeCaster
如果我不能传递任何参数怎么办?还有其他的方法吗? - Omer Javed
会有解决办法的,但请编辑您的问题,包括您想要做什么、相关代码的样子以及导致它停止工作的变化的全部细节。 - CodeCaster
1
对于像 Firefox、Chrome 等其他浏览器,它是正常工作的。但在 Internet Explorer 上从未工作过。 - Omer Javed

1
当在IE8或更低版本中使用document.location.hrefwindow.open打开新窗口时,Request.UrlReferrernull,而在IE9+、Firefox或Chrome中不是这种情况。
解决方法是,在任何你使用的地方,例如:
document.location.href = "/Roles/Index";

只需将以下函数复制并粘贴到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")函数在新的浏览器标签页打开一个页面,对于IE浏览器,UrlReferrer是空的 - 实际上,即使是IE 11也会出现这个问题,而不仅仅是旧版本的IE。 下面的JavaScript代码帮助我解决了这个问题:
var link = document.createElement("a");
link.href = targetUrl;
link.target = "_about";
document.body.appendChild(link);
link.click();

我知道这个问题很老了。但也许我的回答能帮到某些人。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接