18

При просмотре источника страницы в Google Chrome браузер открывает новую вкладку и в основном вставляет URL-адрес с префиксом view-source: . Это нежелательно.

Как разработчик, я могу включить некоторые диагностические данные, которые видны в источнике только после отправки формы. Когда Chrome обновляет страницу для просмотра источника, эта информация исчезает.

Есть ли способ предотвратить такое поведение?

Примечание: я знаком с опцией "Проверка элемента". Это просто не адекватный заменитель для просмотра необработанного исходного текста той страницы, на которую вы просматриваете.


Скрипт быстрого теста

<pre>
  <?= print_r($_POST, true) ?>
</pre>
<form action="" method="post">
  <input id="foo" name="foo" value="bar" />
  <input type="submit" />
</form>

После нажатия кнопки «Отправить» появится страница

Array
(
    [foo] => bar
)

Если вы просматриваете исходный код страницы, вы увидите пустой вывод $_POST

<pre>
Array
(
)
</pre>
<form action="" method="post"> 
  <input id="foo" name="foo" value="bar" /> 
  <input type="submit" /> 
</form> 

Обновить

Видимо эта ошибка уже была отправлена. Вздох...

Если кто-нибудь знает о хорошей работе вокруг, я был бы очень признателен.

3 ответа3

12

На странице отчета об ошибке работает обходной путь, упомянутый в комментарии 12 : В инструментах разработчика включите отслеживание ресурсов. (Если он был выключен, его включение повторно отправит запрос, который сгенерировал видимую в данный момент страницу, либо POST, либо GET.) В списке ресурсов вы можете щелкнуть на главной странице, чтобы увидеть исходный код в том виде, в котором он был возвращен серверами POST и GET.

Дополнительная информация

Я провел несколько тестов, используя простой php-файл, который показал используемый метод запроса и значение POSTed, журнал прокси-сервера, чтобы увидеть, какие запросы делал Chrome, и префикс chrome://net-internals/view-cache/ чтобы увидеть Хром кешировал.

Когда вы используете команду «Просмотр источника», Chrome показывает источник своей кэшированной версии страницы и кэширует только те страницы, которые были запрошены с помощью метода GET.

Если вы просматриваете страницу, которую вы ранее запрашивали с помощью GET и POST, то кэшируется только версия GET. Использование команды View Source не будет повторно запрашивать страницу, но покажет кэшированную версию GET, а не текущую видимую версию POST, если таковая имеется.

Если вы просматриваете страницу, которую вы запрашивали только с помощью метода POST, то при использовании команды View Source Chrome будет искать в своем кэше, ничего не находить, запрашивать страницу с помощью GET, кэшировать ее и показывать источник того, что.

2

Хороший вопрос - и несколько разочаровывающий читать все эти комментарии "это неправильно" или "это не сработает". Такое поведение делает функцию "Просмотр источника страницы" бесполезной для разработки во многих случаях.

Существует расширение под названием « Быстрый просмотр исходного кода », которое, по-видимому, фактически показывает источник загруженной в данный момент страницы (хотя я не проверял его с запросами POST).

0

Извините, что говорю вам, но это противоречит текущей природе просмотра и отладки в браузере ...

Исходный источник не сохраняется в памяти, но анализируется и преобразуется в дерево разбора как можно быстрее, чтобы предотвратить бесполезное использование памяти. Таким образом, любая отладочная информация, которую вы скрываете в источнике, теряется и должна быть явно запрошена. На так называемых сайтах Web 2.0 также меняются элементы, и именно поэтому проверка такова ...

Решение 1: Fiddler Web Debugger позволяет вам проверять HTTP-трафик,
это позволяет вам видеть отладочную информацию из вашего последнего запроса.

Решение 2. Вставьте свою информацию отладки или добавьте ее в конце,
или, может быть, показать это как всплывающее окно или другим удивительным способом, который не мешает вашей планировке.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .