【问题标题】:Request.UrlReferrer is returning "null" in Internet Explorer 7, 8, 9 browsersRequest.UrlReferrer 在 Internet Explorer 7、8、9 浏览器中返回“null”
【发布时间】:2013-10-23 09:24:44
【问题描述】:

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

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

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

请帮帮我。

【问题讨论】:

    标签: c# asp.net internet-explorer


    【解决方案1】:

    在多种情况下,推荐人可以为空。例如,某些隐私设置(政策强制)或插件可以阻止发送引荐来源网址。无论如何,它都是用户输入,你不能信任的东西。

    如果你解释你正在尝试做什么以及你使用什么代码,也许可以给出一个实际的答案。

    【讨论】:

    • 页面上有一些“单击此处”按钮。单击按钮后,将在新选项卡中打开一个新的 url 页面。在打开页面时,我使用 Request.UrlReferrer 将页面的 url 存储在数据库中。
    • 然后只需在新页面的 URL 中添加一个参数,例如 &from=pageX。它与引荐来源网址一样不可靠(因为用户可以更改它),但至少您可以控制无论浏览器配置如何都可以发送它
    • 如果我不能传递任何参数怎么办?另一种方法是什么?
    • 会有一种方法,但请编辑您的问题以包含您想要做什么、您的相关代码是什么样的以及导致它停止工作的更改的完整详细信息。
    • 对于其他浏览器,如 Firefox、Chrome 等,它运行良好。但它从未在 Internet Explorer 上运行过。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      如果您使用 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();
      

      我知道这个问题很老了。但也许我的回答会对某人有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-15
        • 2013-07-09
        • 1970-01-01
        • 1970-01-01
        • 2013-07-11
        • 1970-01-01
        • 2012-07-24
        • 2012-08-27
        相关资源
        最近更新 更多