我有以下 ajax 调用
open: function () {
$(this).load("MyBox.aspx?sec=L&levId=" + RowId);
}
所以人们可以看到查询字符串,所以用户可以复制 url 并将其粘贴到浏览器,但我怎样才能阻止它?我不希望它从浏览器中显示。我怎么能这样做?我正在使用 asp.net 和 jquery。
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 集合使用 POST 方法检索发布到 HTTP 请求正文的表单元素的值。
Request.RequestType
您可以通过检查属性值来确定调用是 GET 调用还是 POST 调用。这样,您可以避免人们向此方法发出 GET 请求并获得响应。
但请记住,有一些工具/浏览器插件可以从浏览器发出 POST 请求。
此外,如果数据是针对授权用户的,您可以在返回内容之前在服务器页面(MYbox.aspx)中检查用户是否有权访问它。
你不能。您永远不能信任客户端上运行的任何代码。如果您需要在客户端隐藏数据,您应该创建一个基于服务器的会话,然后将会话令牌放入加密的 cookie 中。
来自维基百科和 W3C
某些方法(例如,HEAD、GET、OPTIONS 和 TRACE)被定义为安全的,这意味着它们仅用于信息检索,不应更改服务器的状态。换句话说,它们不应该有副作用,除了相对无害的影响,如日志记录、缓存、横幅广告的服务或增加网络计数器。因此,在不考虑应用程序状态上下文的情况下发出任意 GET 请求应该被认为是安全的。
相比之下,POST、PUT 和 DELETE 等方法旨在用于可能导致副作用的操作
如果您的 get 请求更改了服务器的状态(它很可能根据您的帖子进行更改),那么您做错了。你试图做的事情是不可能的。你需要重新考虑你的架构。