2012-10-07 51 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请求更改服务器的(状态,它很可能不根据您的文章),你做错了什么。你试图做的事情是不可能的。你需要重新考虑你的架构。