Як запобігти оновленню сторінки Chrome під час перегляду джерела?


20

Переглядаючи джерело сторінки в 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> 

Оновлення

Мабуть, ця помилка вже надіслана. Зітхніть ...

Якщо хтось знає про гарну роботу, я дуже вдячний.


Люди там не розуміють, що джерело не зберігається в пам'яті (через мінімалізм), а маніпулює. Ви повинні побачити коментар code.google.com/p/chromium/isissue/detail?id=523#c47, як це теж гарна ідея ...
Тамара Війсман

Відповіді:


12

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

введіть тут опис зображення

введіть тут опис зображення

введіть тут опис зображення

введіть тут опис зображення

введіть тут опис зображення

Більше інформації

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

Коли ви використовуєте команду View Source, Chrome показує джерело кешованої версії сторінки, і вона кешує лише ті сторінки, які запитуються методом GET.

Якщо ви переглядаєте сторінку, яку раніше ви запитували за допомогою GET та POST, кешується лише версія GET. Використання команди View Source не вимагатиме повторного запиту на сторінку, але покаже кешовану версію GET, а не поточну видиму версію POST, якщо така є.

Якщо ви переглядаєте сторінку, яку ви запитували лише методом POST, то використання команди View Source призведе до того, що Chrome загляне в кеш, не знайде нічого, запит на сторінку за допомогою GET, кешування її та показ джерела того.


Приємного відкриття!
Тамара Війсман

1
Chrome значно змінився з моменту цієї відповіді, але це в основному те саме: відкрийте інструменти розробки, переконайтеся, що мережевий трафік записується, і знайдіть запит, який було зафіксовано на вкладці Мережа. У випадку перенаправлених запитів ви можете встановити прапорець "Зберегти журнал" або "попередній журнал при навігації", щоб не стирати журнал із кожним новим запитом на синхронізацію.
Jon z

1
@Jonz після усвідомлення цієї дурості мені вже не подобається Google Chrome. Наприклад, мені потрібно було перевірити джерело сторінки сторінки подяки веб-сайту електронної комерції (сторінка завантажується після того, як користувач здійснив успішний платіж, для перевірки запуску коду GTM). Тепер при завантаженні сторінки я просто скидаю необхідний сеанс і знову при перезавантаженні, якщо сеанс не знайдено, я перенаправляю користувача на домашню сторінку. Тож якщо я спробую використати хак Google Chrome, я ніколи не зможу переглянути джерело сторінки, оскільки воно може лише надіслати запит GET і POST, але він не може скинути сеанс. Звідси я б запропонувавuse "Inspect Element"
Абхішек Мадхані

1
@AbhishekMadhani Я не впевнений, що ти мав намір відповісти на мене, але я повторю те, що я написав у коментарі нижче - схоже, що щодо Chrome Canary 37 новий запит на мережу не надсилається під час перегляду джерела .
Jon z

2

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

Існує розширення під назвою " Швидкий переглядач джерела ", який, як видається, фактично показує джерело завантаженої на даний момент сторінки (я не перевіряв її з POST-запитами).


0

Вибачте, але це суперечить поточному характеру перегляду та налагодження в браузері ...

Оригінальне джерело не зберігається в пам'яті, але аналізується і перетворюється на дерево розбору якнайшвидше, це запобігає марному використанню пам'яті. Таким чином, будь-яка інформація про налагодження, яку ви ховаєте у джерелі, втрачається і її потрібно чітко запитувати. На так званих веб-сайтах Web 2.0 також змінюються елементи, і саме тому інспекція така ...

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

Рішення 2: Вставте інформацію про налагодження або додайте її наприкінці,
або, можливо, покажіть її як спливаюче вікно або іншим приголомшливим способом, який не порушує ваш макет.


13
TomWij, "це проти поточного характеру перегляду та налагодження у веб-переглядачі ..." це просто неточно. Поточні версії Firefox та Safari поводяться як "очікувані". Насправді, оскільки я використовував ці функції в інших браузерах, я очікував їх у Chrome. Збереження в пам'яті пари КБ простого тексту для вихідного джерела не повинно скласти труднощів.
macek

Google Chrome відомий своїм мінімалізмом. ;-)
Тамара Війсман

3
Це явно помилково. У Chrome ви можете зберегти оригінальне джерело сторінки (Зберегти сторінку як), не роблячи другого запиту. Це те, що повинно відображатися під час "Перегляду джерела". Нинішня реалізація вкрай небажана. Наприклад, під час перегляду результату POST. В даний час джерело перегляду GET надходить до того ж місця, показуючи зовсім іншу сторінку. Джерело перегляду завжди повинно показувати стан сторінки при поточному запиті, а не майбутньому запиті.
Кріс

6
Без сумніву, і саме тут слід читати View Source. Новий запит є просто оманливим і неправильним.
Кріс

2
@Jonz Ви сперечаєтесь взагалі видалити функцію "Перегляд джерела"? Я б підтримав це, якщо єдиною альтернативою є поточна зламана реалізація. Але чому ми не можемо мати обох? Клацання через мережеві журнали на панелі інструментів розробників - це чудовий варіант, коли вам потрібен такий рівень інформації, але якщо ви просто хочете побачити джерело для поточної сторінки, це здається непосильним.
Кріс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.