我有一个带有字符串参数的ASP.NET Web服务(asmx)函数。内置请求验证应该捕获HTML标记,它在使用自动生成的localhost测试页面或jQuery的ajax / post时工作,如果dataType未设置为json(ValidateRequest =“true”)。
未触发dataType:"json"
HttpRequestValidationException
:
$.ajax({
type: "POST",
url: "/my.asmx/SetName",
data: '{"name":"' + $("#name").val() + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false
});
如果我删除contentType
和dataType
,我会收到预期的HttpRequestValidationException
。
这让我的武装很脆弱。不幸的是,WCF不是一个选择。
答案 0 :(得分:0)
这是设计的。 只验证HttpRequest的Path,PathInfo,RawUrl,Cookies,Form,QueryString和File。 您也可以使用自定义请求验证程序验证标头。
删除contentType时进行请求验证的原因是因为JQuery将其默认为application/x-www-form-urlencoded
这是一个表单帖子(HttpRequest.Form)