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

问题描述 投票:4回答:3

对于Internet Explorer 7,8,9浏览器,C#的Request.UrlReferrer返回null。它的原因是什么?它的解决方案是什么?

页面上有一些“点击此处”按钮。单击该按钮,将在新选项卡中打开一个新的URL页面。在打开页面时,我使用Request.UrlReferrer将Page的url存储在数据库中。

对于其他浏览器,如Firefox,Chrome等,它运行正常。但它从未在Internet Explorer上运行过。

请帮帮我。

c# asp.net internet-explorer
3个回答
2
投票

在各种情况下,引荐者可以是空的。例如,某些隐私设置(按策略进行扩展)或插件可以阻止发送引荐来源。它以任何方式用户输入,你不能相信的东西。

如果你解释你想要做什么以及你用什么代码这样做,也许可以给出一个真正的答案。


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”)函数在新的浏览器选项卡中打开页面,则UrlReferrer对于IE为空 - 实际上对我来说这个问题即使对于IE 11也是可重现的,但不仅适用于旧版本的IE。以下JavaScript代码允许我解决此问题:

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

我知道这个问题已经过时了。但也许我的回答会帮助别人。

© www.soinside.com 2019 - 2024. All rights reserved.