XHR chrome / firefoxなどを編集して再生しますか?


143

私は、ブラウザーで作成されたXHRリクエストを変更し、それを再度再生する方法を探していました。ブラウザで完全なPOSTリクエストを実行したとします。変更したいのは、小さい値を指定してからもう一度再生することだけです。これは、ブラウザーで直接実行する方がはるかに簡単で高速です。

私は少しググってみましたが、ChromeやFirefoxでこれを行う方法を見つけていません。それらのブラウザのいずれか、またはおそらく別のブラウザでそれを行う方法はありますか?


Chromeで「リプレイXHR」が機能しないことに気づいてここに到着した場合、プリフライト(OPTIONS)リクエストの場合は、実際の最終リクエストではなく、プリフライトリクエストで[リプレイ]をクリックする必要があることに注意してください。
Janaka Bandara

回答:


180

クロム:

  • devtoolsのNetworkパネルで、右クリックしてCopy as cURLを選択します
  • curlコマンドを持っていると仮定して、リクエストを貼り付け/編集し、ターミナルから送信します

キャプチャを参照してください:

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

または、ウェブページのコンテキストでリクエストを送信する必要がある場合は、[ フェッチとしてコピー]を選択し、JavaScriptコンソールパネルからコンテンツを編集して送信します。


Firefox:

Firefoxでは、ネットワークパネルから直接XHRを編集して再送信できます。以下のキャプチャはFirefox 36のものです。

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


これは実際に私が探しているものかもしれません。cURL呼び出しをコピーできることは知っていましたが、認証を受けるため、ターミナルから直接実行することはできませんでした。しかし、ターミナルがChormeに直接組み込まれているので、呼び出しはブラウザーの「内部」から行われたと思います。もしそうなら、これは契約を締結する必要があります。
Madsobel、2015

14
私は答えにFirefoxに関する情報を追加しました
Michael P. Bazos 2015年

小さなトリック:ブラウザーでcURL出力を表示したい場合は、このようにCLIで実行してから、ブラウザーでcurl ... > preview.htmlファイルを開きます。
afilina 2015年

@afilinaこのプロセスをさらに自動化するには&& open preview.html、macOSに追加することができ、ファイルはリクエストの直後に開きます
CodeBrauer

2
この場合、Firefoxの方がはるかに優れています。
jpenna

41

Chromeのバージョン67では、フェッチとしてコピーが使用できるようになりました。

フェッチとしてコピー

ネットワークリクエストを右クリックし、[ コピー]> [ フェッチとしてコピー ]を選択してfetch()、そのリクエストに対応するコードをクリップボードにコピーします。

https://developers.google.com/web/updates/2018/04/devtools#fetch

出力例:

fetch("https://stackoverflow.com/posts/validate-body", {
  credentials: "include",
  headers: {},
  referrer: "https://stackoverflow.com/",
  referrerPolicy: "origin",
  body:
    "body=Chrome+now+has+_Copy+as+fetch_+in+version+67%3A%0A%0A%3E+Copy+as+fetch%0ARight-click+a+network+request+then+select+**Copy+%3E+Copy+As+Fetch**+to+copy+the+%60fetch()%60-equivalent+code+for+that+request+to+your+clipboard.%0A%0A&oldBody=&isQuestion=false",
  method: "POST",
  mode: "cors"
});

違いは、cURLとしてコピーにはすべてのリクエストヘッダー(CookieやAcceptなど)も含まれ、Chromeの外部でリクエストを再生するのに適していることです。fetch()コードは、同じブラウザの内部を再生するのに適しています。


6
これありがとう。疑問に思っている他の人のために- fetchコマンドを直接Chromeコンソールに貼り付けて、リクエストを再生することができます。
Eric Kigathi

7
フェッチの後に次を使用して、フェッチによって返されたpromiseを解決し、応答本文を表示できます(JSONであると想定).then(r => r.json()).then(json => console.log(json))
POSIX準拠

1
@ジョシュ・リー、POSIX準拠のヒントは良かったと思います。この回答に追加できます。
Nabi KAZ

@POSIX準拠の良いヒント、心に留めておくことができるもっと小さなコマンドはありますか?!
Nabi KAZ

フェッチコードをどこに貼り付けるのか不思議に思う人のために、コンソールに貼り付けて変更してください
dotista2008

20

私の2つの提案:

  1. ChromeのPostmanプラグイン + Postman Interceptorプラグイン。詳細:郵便配達員によるリクエストドキュメントのキャプチャ

  2. Windowsを使用している場合は、TelerikのFiddlerがオプションです。httpリクエストを再生するコンポーザーオプションがあり、無料です。


8
Postman + Interceptor chrome拡張機能を使い始めて以来、Fiddlerを使用する必要はありませんでした。
threadster、2015

3
FYI Postmanアプリfor Chromeは非推奨になり、スタンドアロンバージョンでのセットアップは少し難しい
yefrem

私が探していたものに感謝します!
Mohammad


4

Firefoxの場合、問題は自動的に解決しました。「編集して再送信」機能が実装されています。

Chromeの改ざんの拡張機能は、トリックを行うようです。


これはもう更新されておらず、かなり悪いレビューがあります。最善の代替策は、この種の作業にFirefoxを使用することです。
T3rm1

うん。再送の状況は急速に変化しているようです。現在、ChromeにはXHRリクエストのResend-forがありますが、編集はできません。
Jari Turkia

編集して再送信すると、CookieのCSRFトークンに問題があると思われるFirefox ver.76に注意してください。ver 37で試してみましたが、ver76ではCSRFトークンの検証に問題があります。
puppyceceyoyo

0

上記のように、これを行う方法はいくつかありますが、私の経験では、XHRリクエストを操作して再送信する最良の方法は、Chrome開発ツールを使用してリクエストをcURLリクエストとしてコピーすることです(ネットワークタブでリクエストを右クリックします) )およびPostmanアプリにインポートするだけです(左上の巨大なインポートボタン)。


0

5年が経過しましたが、この重要な要件はChrome開発者によって無視されませんでした。
Firefoxのようにデータを編集する方法はありませんが、完全なXHR再生を提供します。
これにより、ajax呼び出しをデバッグできます。 「リプレイXHR」は送信全体を繰り返します。
ここに画像の説明を入力してください


0

サードパーティの拡張機能をインストールする必要はありません。

javascript-snippetが存在します。これをブラウザーのブックマークとして追加、任意のサイトでアクティブにして、要求を追跡および変更できます。それは次のようになります:

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

詳細な手順については、githubページを確認してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.