如何禁用从浏览器到达ajax调用

时间:2012-10-07 00:02:52

标签: asp.net ajax jquery

我跟随ajax调用

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

所以人们可以看到查询字符串,因此用户可以复制网址并将其粘贴到浏览器,但我怎么能阻止它?我不希望它从浏览器显示。我怎么能这样做?我使用的是asp.net和jquery。

3 个答案:

答案 0 :(得分:2)

load函数发出 GET 请求。而不是那样,您可以使用jQuery POST 调用并获取数据。用户无法通过在浏览器中粘贴结果并按Enter(即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)中访问该数据。

答案 1 :(得分:1)

你做不到。您永远不会相信客户端上运行的任何代码。如果需要在客户端上隐藏数据,则应创建基于服务器的会话,然后将会话令牌放入加密的cookie中。

答案 2 :(得分:1)

来自维基百科和W3C

  

某些方法(例如,HEAD,GET,OPTIONS和TRACE)被定义为安全,这意味着它们仅用于信息检索,不应更改服务器的状态。换句话说,它们不应该具有副作用,除了相对无害的效果,例如日志记录,缓存,横幅广告的提供或递增网络计数器。   因此,在不考虑应用程序状态的上下文的情况下进行任意GET请求应该被认为是安全的。

     

相比之下,POST,PUT和DELETE等方法适用于可能导致副作用的操作

如果您的get请求更改了服务器的状态(很可能是基于您的帖子),那么您做错了。你要做的事是不可能的。您需要重新考虑您的架构。