asmx пропускает проверку запроса при получении сообщения от jQuery.ajax с dataType: "json"

У меня есть функция веб-службы ASP.NET (asmx) со строковыми параметрами. Встроенная проверка запросов должна перехватывать теги HTML, и она работает при использовании автоматически сгенерированной тестовой страницы localhost или jjuery / 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 не вариант.

1 ответ

Это по замыслу. Проверяются только пути HttpRequest, PathInfo, RawUrl, Cookies, Form, QueryString и File. Заголовки также могут быть проверены, если вы используете специальный валидатор запросов.

Причина, по которой проверка запроса выполняется при удалении contentType, заключается в том, что JQuery по умолчанию имеет значение application/x-www-form-urlencoded который является формой поста (HttpRequest.Form)

Другие вопросы по тегам