ソースを表示するときに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/issues/detail?id=523#c47が表示されるはずです。これもいいアイデアのようです...
タマラWijsman

回答:


12

バグレポートページから、コメント12に記載されている回避策が機能します。開発者ツールで、リソーストラッキングを有効にします。(オフの場合、有効にすると、現在表示されているページ(POSTまたはGETのいずれか)を生成した要求が再送信されます。)リソースのリストで、メインページをクリックして、サーバーによって返されたソースコードを確認できますPOST要求とGET要求の両方に対して。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

詳しくは

使用したリクエストメソッドとPOSTされた値、Chromeが行っているリクエストを確認するプロキシサーバーログ、chrome://net-internals/view-cache/Chromeがキャッシュしているものを確認するプレフィックスを示す簡単なphpファイルを使用して、いくつかのテストを実行しました。

[ソースの表示]コマンドを使用すると、Chromeはページのキャッシュバージョンのソースを表示し、GETメソッドでリクエストされたページのみをキャッシュします。

GETおよびPOSTを使用して以前にリクエストしたページを表示している場合、GETバージョンのみがキャッシュされます。[ソースの表示]コマンドを使用してもページは再要求されませんが、現在表示されているPOSTバージョンではなく、キャッシュされたGETバージョンが表示されます。

POSTメソッドを使用してのみリクエストしたページを表示している場合、[ソースの表示]コマンドを使用すると、Chromeはキャッシュを検索し、何も見つけず、GETを使用してページをリクエストし、キャッシュして、ソースを表示しますその。


素晴らしい発見!
タマラWijsman

1
Chromeはこの答えから大きく変わりましたが、基本的には同じです。開発ツールを開き、ネットワークトラフィックが記録されていることを確認し、[ネットワーク]タブに記録されたリクエストを見つけます。リダイレクトされたリクエストの場合、「ログを保存する」または「ナビゲーション時にログを逆にする」をチェックして、新しい同期リクエストごとにログを消去しないようにすることができます。
ジョンz

1
@Jonzは、この愚かさを認識した後、すでにGoogle Chromeを嫌っています。たとえば、EコマースWebサイトのありがとうページのページソースを確認する必要がありました(GTMコードの実行を確認するために、ユーザーが正常に支払いを行った後に読み込まれるページ)。ページの読み込み時に、必要なセッションの設定を解除し、セッションが見つからない場合は再読み込み時に、ユーザーをホームページにリダイレクトします。したがって、Google Chromeハックを使用しようとしても、GETおよびPOSTリクエストのみを再送信できますが、セッションをリセットできないため、ページソースを表示することはできません。したがって、私はお勧めしますuse "Inspect Element"
Abhishek Madhani 14年

1
@AbhishekMadhaniあなたが私に返信するつもりかどうかはわかりませんが、下のコメントに書いたことを繰り返します-Chrome Canary 37の時点で、ソースを表示したときに新しいネットワークリクエストが送信されていないようです。
ジョンz 14年

2

良い質問です-そして、「これは間違っています」または「これは機能しません」というコメントをすべて読むのは少し残念です。この動作により、多くの場合、「ページソースの表示」機能は開発に役に立たなくなります。

クイックソースビューアー」と呼ばれる拡張機能があり、現在ロードされているページのソースを実際に表示しているように見えます(ただし、POSTリクエストでテストしていません)。


0

申し訳ありませんが、これはブラウザでのブラウジングとデバッグの現在の性質に反しています...

元のソースはメモリに保持されませんが、無駄なメモリ使用を防ぐために、可能な限り高速で解析され、解析ツリーに変換されます。したがって、ソースで非表示にするデバッグ情報は失われ、明示的に要求する必要があります。いわゆるWeb 2.0サイトでは、要素も変化するため、検査がそのようになります...

解決策1: Fiddler Web Debuggerでは、HTTPトラフィックを検査
できます。これにより、最後のリクエストのデバッグ情報を表示できます。

解決策2:デバッグ情報を埋め込むか、最後に追加する
か、ポップアップとして表示するか、レイアウトを邪魔しない別の素晴らしい方法で表示することができます。


13
TomWij、「これはブラウザでのブラウジングとデバッグの現在の性質に反しています...」これはまったく不正確です。FirefoxとSafariの現在のバージョンは、どちらも「期待」として動作します。実際、これらの機能を他のブラウザーで使用しているため、Chromeでそれらを期待するようになりました。元のソース用に数KBのプレーンテキストをメモリに保持することは簡単です。
macek

Google Chromeは、そのミニマリズムで知られています。;-)
Tamara Wijsman

3
これは明らかに間違っています。Chromeでは、2回目のリクエストを行わなくても、ページの元のソースを保存(名前を付けてページを保存)できます。これは、「ソースを表示」するときに表示されるものです。現在の実装は非常に望ましくありません。たとえば、POSTの結果を表示する場合。ソースの表示は現在、同じ場所に対してGETを実行し、まったく異なるページを表示しています。ソースの表示には、将来のリクエストではなく、現在のリクエストでのページの状態が常に表示される必要があります。
クリス

6
疑いの余地はありません。そして、そこからView Sourceも読むべきです。新しいリクエストは誤解を招くだけでなく、間違っています。
クリス

2
@Jonzソース表示機能を完全に削除しようとしていますか?唯一の選択肢が現在の壊れた実装である場合、これをサポートします。しかし、なぜ私たちは両方を持てないのでしょうか?devツールバーのネットワークログをクリックすることは、そのレベルの情報が必要な場合に便利なオプションですが、現在のページのソースを表示したいだけの場合はやりすぎです。
クリス14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.