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

时间:2013-10-23 09:24:44

标签: c# asp.net internet-explorer

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

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

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

请帮帮我。

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

在IE8或更低版本中打开window.openRequest.UrlReferrer的新窗口时,nulldocument.location.href = "/Roles/Index"; ,而在IE9 +,Firefox或Chrome中则不是这样。

解决方案是,无论你使用过什么,如

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;
  }
}

只需将以下函数复制并粘贴到js文件中并调用该函数即可。

hash_tree = {
  <Category id: 1, title: "foo"> => {},
  <Category id: 2, title: "bar"> => {
    <Category id: 3 title: "baz"> => {
      <Category id: 4 title: "qux"> => {}
    }
  },
  <Category id: 5, title: "norf"> => {}
}

希望上述解决方案能够解决问题。

答案 2 :(得分: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();

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