asmx在从jQuery.ajax接收post以及dataType:“json”时跳过请求验证

时间:2013-03-01 10:25:28

标签: jquery asmx request-validation

我有一个带有字符串参数的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
});

如果我删除contentTypedataType,我会收到预期的HttpRequestValidationException

这让我的武装很脆弱。不幸的是,WCF不是一个选择。

1 个答案:

答案 0 :(得分:0)

这是设计的。 只验证HttpRequest的Path,PathInfo,RawUrl,Cookies,Form,QueryString和File。 您也可以使用自定义请求验证程序验证标头。

删除contentType时进行请求验证的原因是因为JQuery将其默认为application/x-www-form-urlencoded这是一个表单帖子(HttpRequest.Form)