2013-06-27 36 views
1

我有兩個aspx頁面,名稱爲List.aspx & View.aspx。如何避免使用JavaScript調用頁面時asp.net中的UrlReferrer錯誤window.open

在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錯誤。

+0

我只是做了一個測試,對我來說工作正常。 (你有沒有在這裏注意一個空間? - >''List.aspx'),即使是空間也行。 – Aristos

+0

是的,我把這個和它的代碼做成同樣的代碼 - 但請注意,Request.UrlReferrer '必須在'list.aspx'上不要在'view.aspx'上輸入 – Aristos

+0

請再次閱讀我的問題第二行.. Request.UrlReferrer在view.aspx中使用不在list.aspx中 – bgs

回答

2

首先,我會試圖阻止您使用UrlReferrer出於安全目的。背後的想法是,你可以只從你的域的頁面調用你的頁面。由於UrlReferrer具有瀏覽器特定的行爲,因此可以更好地實現Cookie。 Chrome或Firefox可以以不同於Internet Explorer的方式進行處理。

關於被如此類似的問題,導致無處: 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)檢查是否有查詢STR加密令牌如果它可以被解密並且不太舊。

相關問題