我有两个名称为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错误。

最佳答案

首先,我会劝阻您出于安全目的使用UrlReferrer。这样做的想法是,您只能从域中的页面调用页面。由于UrlReferrer具有特定于浏览器的行为,因此可以更好地实现低谷Cookie。 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之外)上检查查询字符串中是否存在加密令牌,是否可以解密并且令牌是否太旧。

10-08 10:55