2012-10-07 50 views
0

禁用達到Ajax調用我有以下Ajax調用如何從瀏覽器

open: function() { 
        $(this).load("MyBox.aspx?sec=L&levId=" + RowId); 
       } 

,使人們可以看到查詢字符串,因此用戶可以複製網址並將其粘貼到瀏覽器,但我怎麼能阻止?我不希望它從瀏覽器顯示。我該怎麼做?我使用asp.net和jQuery。

+0

您的請求使用'GET'方法,使用'POST'方法。 http://api.jquery.com/load/#request-method – undefined

回答

1

你不能。你永遠不能相信客戶端上運行的任何代碼。如果您需要隱藏客戶端上的數據,則應創建基於服務器的會話,然後將會話令牌放入加密的cookie中。

+0

所以如果我創建會話相同的用戶仍然可以通過粘貼另一個瀏覽網頁來查看內容?你能告訴我任何這個教程嗎?謝謝 –

2

load功能問題GET請求。相反,您可以使用jQuery POST調用並獲取數據。用戶不能在瀏覽器中粘貼得到的結果並回車(這是GET請求)

var thatObject=$(this); 
    $.post("MyBox.aspx?sec=L&levId=" + RowId,function(response){ 
    thatObject.html(response); 
    }) 

在服務器頁面上,你可以閱讀張貼檢查的Request.Form收集的值(而不是的Request.QueryString)。

msdn

Form集合檢索張貼到 HTTP請求體形式的元素的值,與使用POST方法的形式。

您可以通過檢查Request.RequestType屬性值來確定該呼叫是GET調用還是POST調用。通過這種方式,您可以避免人們向此方法發出GET請求並獲取響應。

但請記住,有工具/瀏覽器插件可以從瀏覽器發出POST請求。

此外,如果數據是授權用戶,您可以在返回內容之前檢查用戶是否有權在服務器頁面(MYbox.aspx)中訪問它。

+0

好吧我改變它發佈,但當我通過它(http://mysite.com/MyBox.aspx?sec=L&levId= +「2」)瀏覽器,我可以看到頁面內容 –

+0

@MichaelRiva:使用HttpRequest。 RequestType屬性來確定它是否是GET/POST。檢查我更新的答案。 – Shyju

+0

嗯非常感謝,我如何檢查用戶有權訪問? –

1

維基百科和W3C

一些方法(例如,HEAD,GET,OPTIONS和TRACE)被定義爲安全的,這意味着它們僅用於信息檢索和不應該改變的狀態服務器。換句話說,他們不應該有副作用,除了相對無害的影響,如日誌記錄,緩存,橫幅廣告投放或增加網頁計數器。因此,不考慮應用程序狀態的上下文而進行任意的GET請求應該被認爲是安全的。

與此相反,如POST方法,PUT和DELETE旨在對可能引起的副作用

行動如果您的GET請求更改服務器的(狀態,它很可能不根據您的文章),你做錯了什麼。你試圖做的事情是不可能的。你需要重新考慮你的架構。