【问题标题】:URL Referer not working on pop up windowsURL Referer 在弹出窗口上不起作用
【发布时间】:2011-11-26 16:38:54
【问题描述】:

我有两个页面,即www.abc.com/pg1.aspxwww.abc.com/pg2.aspx

pg1.aspx
response.redirect("www.abc.com/pg2.aspx");

pg2.aspx
string url_refer = Request.UrlReferrer.ToString();

UrlReferrer 工作正常。

pg1.aspx
<a href='#' onclick=\"window.open('www.abc.com/pg2.aspx', 'windowname2', 'width=1014, height=709, screenX=1, left=1, screenY=1, top=1, status=no, menubar=no, resizable=no, toolbar=no'); return false;\">

pg2.aspx
string url_refer = Request.UrlReferrer.ToString();

UrlReferrerNULL

我搜索了解决方案。但它们都没有导致我想要的解决方案。

我的问题是如果窗口没有菜单栏、状态或工具栏,UrlReferrerNULL

如果没有,UrlReferrer 有上一页的 URL。

我也试过url_refer = Request.ServerVariables["HTTP_REFERER"].ToString(); 而不是string url_refer = Request.UrlReferrer.ToString();

结果是一样的。

有什么办法吗?

【问题讨论】:

    标签: asp.net href referer


    【解决方案1】:

    我不确定..但我发现了..

    如果我们使用 Javascripts 调用新页面,会话将不起作用。

    有人告诉我,所有会话值都会在使用 javascripts 调用的新页面上重置。

    作为我的问题的替代方案,我使用了 QueryString。

    我真的不希望用户看到 URL,但我已经用 javascript 隐藏了 URL。

    所以,我使用查询字符串没有问题,对吧?

    有人有更好的解决方案吗?

    【讨论】:

      【解决方案2】:

      我发现了这个很好的解决方法on a forum,并稍作调整。

      将此代码放在页面顶部:

      <script language="JavaScript">
      function goTo(url){
         var link = document.getElementById("link");
         link.href = url;
         link.click();
      }
      </script>
      <a id="link" target="_blank" href="javascript:void(0)"
        style="visibility:hidden;position:absolute;"></a>
      

      ...然后像这样构建您的链接:

      <input type="button" value=google onclick="goTo('http://www.google.com')">
      

      您所做的是创建一个不可见的 &lt;a&gt; 元素,然后使用 javascript 更改该元素的地址,并以编程方式“单击”它。

      【讨论】:

        【解决方案3】:
        <a href="javascript:void(0);" onClick="MyWindow=window.open('','gallery','location=no,directories=no,menubar=no,scrollbars=no,width=550,height=550');MyWindow.location.href='yoururl.html;MyWindow.focus(); return false;">
        

        诀窍是使用 location.href,它确实在 IE 中记录了引用者。

        【讨论】:

        • 您好像少了一个引号:MyWindow.location.href='yoururl.html';
        • 这对我帮助很大! retun false; 是做什么的?
        【解决方案4】:

        我的解决方案是从“document.referrer”中获取

        document.addEventListener('DOMContentLoaded', function () {     
            document.getElementById('hfUrlReferrer').value = document.referrer; 
        })
        

        【讨论】:

          【解决方案5】:

          对此没有简单的答案 - 通常,UrlReferrer 是特定于浏览器的行为。例如,Chrome 的处理方式与 Internet Explorer 不同。

          如果您自己进行引荐,那么您最好传递一个查询字符串参数或使用会话状态来识别引荐 URL。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-08-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-01-09
            • 1970-01-01
            相关资源
            最近更新 更多