【问题标题】:How to avoid UrlReferrer error in asp .net when page called using javascript window.open使用javascript window.open调用页面时如何避免asp .net中的UrlReferrer错误
【发布时间】:2013-06-24 18:33:26
【问题描述】:

我有两个名为 List.aspx 和 View.aspx 的 aspx 页面。

在 view.apsx 中使用 Request.UrlReferrer 属性(出于某些安全目的)

View.aspx
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load

    If Request.UrlReferrer Is Nothing Then
        Response.Write("Invalid URL")
    Else
      // Some Code here
    End

End Sub

在List.aspx页面中调用一个java脚本函数如:

List.aspx 
    function ViewDetail(HCode)
    {
            var url = "View.aspx?ActivePageName=V&HeaderCode=" + HCode;
                var z = window.open(url, "Action", "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=0,border=thin,top=400,left=400,width=500,height=200");
    }

在新打开的弹出窗口中,我得到 UrlReferrer is error.

【问题讨论】:

  • 我只是做了一个测试,对我来说工作正常。 (你注意到这里有空格吗?->" List.aspx)即使有空格也是可以的。
  • 是的,我编写了与此代码相同的代码及其对我的工作 - 但请注意,Request.UrlReferrer 必须在 list.aspx 上,而不是在 view.aspx 上,因为您键入
  • 请再次阅读我的问题第 2 行。Request.UrlReferrer 在 vi​​ew.aspx 中使用,不在 list.aspx 中
  • 您看到list.aspx 上您使用javascript 打开了list.aspx 吗? view.aspx 和 UrlReferrer 有什么关系?
  • 对此非常抱歉..我错误地准备了示例代码..

标签: javascript asp.net .net vb.net


【解决方案1】:

首先,我会尽量劝阻您出于安全目的使用 UrlReferrer。这背后的想法是您只能从您域上的页面调用您的页面。这可以通过 cookie 更好地实现,因为 UrlReferrer 具有特定于浏览器的行为。 Chrome 或 Firefox 的处理方式与 Internet Explorer 不同。

关于 SO 有一个类似的问题导致无处可去: URL Referer not working on pop up windows

如果我是你,我会做什么 - 作为其中的一部分

var url = "View.aspx?ActivePageName=V&HeaderCode=" + HCode + "&Token=<%= EncryptedToken %>";

我会传递一些安全令牌,其中将包含页面名称,例如 (C#):

string EncryptedToken { get {
  return Encrypt(string.Format("/List.aspx,{0}", DateTime.Now.Ticks));
}}

然后在 View.aspx(除了 UrlReferrer)上检查查询字符串中是否有加密令牌,是否可以解密并且不是太旧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-08
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-18
    • 2020-10-17
    • 2021-04-19
    相关资源
    最近更新 更多