【发布时间】:2013-03-03 11:52:34
【问题描述】:
在测试通过 jQuery ajax 从用户发送到服务器的输入时,我收到此错误“从客户端检测到具有潜在危险的 Request.Form 值”。只有当我故意在输入 ex "<s"c'o<>" 中添加一个单引号、双引号、html 字符作为我的用户名时,它才会出现。但是,我仍然希望能够优雅地编码和解码用户尝试输入的任何错误输入。
这里是客户端 jquery
var email = encodeURIComponent($('#loginEmail').val());
var password = encodeURIComponent($('#loginPassword').val());
$.ajax({
async: false,
url: 'Account/CheckLogin',
dataType: 'JSON',
contentType: 'application/json',
data: {
email: email,
password: password
},
success: function (resp) {
alert(resp.valid);
if (resp.valid == "false") {
isValid = false;
$('.errorspan').show();
}
}
});
控制器代码实际上并不重要,因为错误在到达第一行的断点之前就被抛出了。在我有机会处理代码之前,似乎 Asp.net 试图将其作为 ajax 传递。我的问题是 - 为什么 encodeUriComponent() 会发生这种情况??
【问题讨论】:
-
每当有人键入
$.ajax({ async: false...时,一只可爱的小兔子死在某个地方可能更多...... -
我绝对必须这样,这一次,对不起所有的兔子
-
你的电话必须是get吗?可以发帖吗?
-
jQuery 会为您编码值,因此如果您对它们进行预编码,您会将
<转换为%3c,然后 jQuery 会转而将其转换为%253c(25 是百分比符号的代码)。因此,当它最终到达服务器时,<将不会出现在您的代码中 -%3c会出现。所以我想说不要尝试自己编码,而是使用 MattW 关于关闭验证的建议,让框架处理编码。 -
通过调用 encodeURIComponent 得到编码,你发送什么字符来阻塞 IIS?
标签: jquery asp.net ajax asp.net-mvc-3