我跟随ajax调用
open: function () {
$(this).load("MyBox.aspx?sec=L&levId=" + RowId);
}
所以人们可以看到查询字符串,因此用户可以复制网址并将其粘贴到浏览器,但我怎么能阻止它?我不希望它从浏览器显示。我怎么能这样做?我使用的是asp.net和jquery。
答案 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请求更改了服务器的状态(很可能是基于您的帖子),那么您做错了。你要做的事是不可能的。您需要重新考虑您的架构。