JQuery AJAX-вызов, содержащий скрипт-тег в данных - PullRequest
0 голосов
/ 26 ноября 2009

Я читаю некоторые значения из текстовых полей и отправляю их через почтовый метод jQuerys на сервер. Если пользователь вводит текст, содержащий что-то вроде «бла бла», вызов не выполняется. В этом случае данные выглядят так:

var data = { myKey: 'bla <script> bla' };

И я отправляю его на сервер так:

 $.post(targetUrl, data, function(x) {...});

На стороне сервера (веб-форма Asp.Net) похоже, что вызов никогда не достигает сервера. Есть подсказка, как это решить? Если есть удобная функция, которая очищает данные от плохих тегов, это тоже подойдет.

Ответы [ 3 ]

1 голос
/ 26 ноября 2009

Вы деактивировали запрос подтверждения вашей страницы aspx?

добавьте это в объявление вашей страницы: validateRequest="false"

0 голосов
/ 26 ноября 2009

Я бы предложил экранировать ваши значения на стороне клиента с помощью функции перехода javascript, как показано ниже

var data = { myKey: escape('bla <script> bla') };

Как только вы это сделаете, вы можете получить правильное значение на стороне сервера, используя следующий код (.Net Code)

HttpUtility.UrlDecode(param_value_to_decode)

Я проверил это, и правильное значение правильно передается на сервер через почтовый запрос.

Надеюсь, это поможет.

Дополнительная информация: я забыл указать причину ошибки. При проверке запроса с использованием firebug он возвращает «500 Internal Server Error - потенциально опасное значение Request.Form, обнаруженное из ...». Это встроенный механизм защиты от asp.net для защиты от внедрения скрипта. Следующая директива страницы ValidateRequest = "false" не решила проблему должным образом (работает в традиционных WebForms). Это может быть что-то конкретное для платформы Mvc, не уверен. Вышеупомянутое решение работает, так что просто используйте это.

Привет

G

0 голосов
/ 26 ноября 2009

Чтобы удалить теги с помощью функции jQuery:

jQuery.fn.stripTags = function() {
        return this.replaceWith( this.html().replace(/<\/?[^>]+>/gi, '') );
};

Получаете ли вы загрузку страницы в ASP.NET?Если да, то в Request.Params нет ничего?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...