Что может изменить DOM веб-страницы после того, как браузер получит ответ?
Я наблюдаю такое поведение в значении скрытого элемента ввода, который содержит токен одноразовой формы.
Когда я «просматриваю исходный код» в браузере, я вижу правильное значение, записанное сервером. Когда я отправляю форму, просматриваю текущее состояние DOM или просто меняю элемент на ввод текста, я вижу другую строку. Таким образом, значение, которое вводится, когда пришло время отправить обратно на сервер, отличается от того, которое сервер отправил изначально.
Проблема сохраняется с отключенным javascript. Добавление к элементу атрибута только для чтения тоже не помогло.
НОВАЯ ИНФОРМАЦИЯ: Я немного повозился с этим, и, хотите верьте, хотите нет, отключение изображений в Firefox решает эту проблему.
С какой стати это могло произойти?
Публикует ли оно правильное значение?
К сожалению, он публикует измененное значение, которое отличается от того, которое сервер изначально выписал и ожидает возврата. Похоже, отправка недействительной формы ...






Если в браузере есть возможность «сохранять данные формы», возможно, он предварительно заполняет данные ранее отправленным значением.
(Я ожидал, что популярные браузеры достаточно умны, чтобы не заполнять скрытые поля, но это один из источников, который я могу предложить ...)
Что вы имеете в виду под "когда я отправляю форму, я просматриваю текущее состояние DOM"?
Если вы отправляете форму, отправляет ли она запрос на сервер? Вы говорите о состоянии DOM на результирующей странице, отправленной сервером?
На самом деле невозможно, чтобы без использования сценариев на стороне клиента ваша DOM была изменена на стороне клиента.
Если, с другой стороны, вы отправляете серверу и получаете обратно полностью новую модель DOM, значит, сервер ее изменил.
отправка формы на сервер, просмотр DOM (элемент проверки) или использование текстового поля - все это способы просмотреть интересующую меня часть: value = "XXX" Все эти три согласны с тем, что такое XXX, но не совпадают значение, хранящееся в сеансе, ИЛИ значение, которое я вижу, когда просматриваю исходный код в браузере.
Возможно, вам повезет, поместив readonly = "только для чтения" в тег поля и autocomplete = "выкл".
Не уверен, что автозаполнение в браузере будет делать это, но это правдоподобно, также можно попробовать отключить автозаполнение в тестируемых браузерах и посмотреть, изменится ли что-нибудь.
Я ошибался в своей интерпретации происходящего. Думаю, это хорошо, потому что то, что я думал, что вижу, никогда не должно произойти! Во всяком случае, вот ситуация, как я теперь понимаю:
Маркер формы здесь одноразовый, поэтому он действителен только для загрузки одной страницы. Где-то в другом месте на странице был тег img без атрибута src, который заставлял браузер пытаться загрузить изображение из /. Поскольку индексная страница является страницей php, токен был зациклен.
Я полагал, что DOM изменилась, потому что некоторые реализации «источника просмотра» (я тестировал в нескольких браузерах), похоже, также вызывали перезагрузку страницы ...
Спасибо за все предложения.
Одна из (многих) вещей, которая больше всего меня бесит в Firefox, - это его настойчивое желание перезагрузить страницу для просмотра исходного кода. Особенно, когда указанная страница находится в системе авторизации. К счастью, на панели инструментов веб-разработчика есть обходной путь, который позволяет «просматривать созданный исходный код» и избегать перезагрузки.
Я не могу поделиться всей страницей, но это элемент. <input type = "hidden" name = "reqToken" value = "116568731649388bac62295" id = "formToken" />