メインコンテンツにスキップ

Request

ページがネットワークリソースへのリクエストを送信するたびに、Page によって次のイベントシーケンスが発行されます。

  • Page.Request は、リクエストがページによって発行されたときに発行されます。
  • Page.Response は、リクエストに対するレスポンスステータスとヘッダーが受信されたとき (および受信された場合) に発行されます。
  • Page.RequestFinished は、レスポンスボディがダウンロードされ、リクエストが完了したときに発行されます。

リクエストが途中で失敗した場合、'requestfinished' イベント (および場合によっては 'response' イベントの代わりに)、Page.RequestFailed イベントが発行されます。

注意

404 や 503 などの HTTP エラーレスポンスは、HTTP の観点からは依然として成功したレスポンスであるため、リクエストは 'requestfinished' イベントで完了します。

リクエストが 'redirect' レスポンスを受け取った場合、リクエストは requestfinished イベントで正常に完了し、リダイレクトされた URL に新しいリクエストが発行されます。


メソッド

AllHeadersAsync

追加バージョン: v1.15 request.AllHeadersAsync

このリクエストに関連付けられたすべてのリクエスト HTTP ヘッダーを持つオブジェクト。ヘッダー名は小文字化されています。

使用例

await Request.AllHeadersAsync();

戻り値


Failure

追加バージョン: v1.9 より前 request.Failure

このメソッドは、requestfailed イベントによって報告されたように、このリクエストが失敗した場合を除き、null を返します。

使用例

失敗したすべてのリクエストのログ記録の例

page.RequestFailed += (_, request) =>
{
Console.WriteLine(request.Failure);
};

戻り値


Frame

追加バージョン: v1.9 より前 request.Frame

このリクエストを開始した Frame を返します。

使用例

var frameUrl = request.Frame.Url;

戻り値

詳細

場合によってはフレームが利用できず、このメソッドが例外をスローすることに注意してください。

  • リクエストが Service Worker で発生した場合。request.serviceWorker() を使用して確認できます。
  • ナビゲーションリクエストが、対応するフレームが作成される前に発行された場合。Request.IsNavigationRequest を使用して確認できます。

すべてのケースを処理する例を次に示します。


HeaderValueAsync

追加バージョン: v1.15 request.HeaderValueAsync

名前と一致するヘッダーの値を返します。名前は大文字と小文字を区別しません。

使用例

await Request.HeaderValueAsync(name);

引数

  • name string#

    ヘッダーの名前。

戻り値


Headers

追加バージョン: v1.9 より前 request.Headers

リクエスト HTTP ヘッダーを持つオブジェクト。ヘッダー名は小文字化されています。このメソッドは、cookie 関連のものを含むセキュリティ関連のヘッダーを返さないことに注意してください。cookie 情報を含むヘッダーの完全なリストについては、Request.AllHeadersAsync() を使用できます。

使用例

Request.Headers

戻り値


HeadersArrayAsync

追加バージョン: v1.15 request.HeadersArrayAsync

Request.AllHeadersAsync() とは異なり、ヘッダー名が小文字化されていない、このリクエストに関連付けられたすべてのリクエスト HTTP ヘッダーを持つ配列。Set-Cookie など、複数のエントリを持つヘッダーは、配列に複数回表示されます。

使用例

await Request.HeadersArrayAsync();

戻り値


IsNavigationRequest

追加バージョン: v1.9 より前 request.IsNavigationRequest

このリクエストがフレームのナビゲーションを駆動しているかどうか。

一部のナビゲーションリクエストは、対応するフレームが作成される前に発行されるため、Request.Frame は利用できません。

使用例

Request.IsNavigationRequest

戻り値


Method

追加バージョン: v1.9 より前 request.Method

リクエストのメソッド (GET、POST など)

使用例

Request.Method

戻り値


PostData

追加バージョン: v1.9 より前 request.PostData

リクエストのポストボディ (存在する場合)

使用例

Request.PostData

戻り値


PostDataBuffer

追加バージョン: v1.9 より前 request.PostDataBuffer

リクエストのポストボディ (バイナリ形式、存在する場合)

使用例

Request.PostDataBuffer

戻り値


PostDataJSON

追加バージョン: v1.12 request.PostDataJSON

`form-urlencoded` および JSON の場合、解析されたリクエストのボディを返します (フォールバックとして)。

レスポンスが application/x-www-form-urlencoded の場合、値のキー/バリューオブジェクトが返されます。それ以外の場合は、JSON として解析されます。

使用例

Request.PostDataJSON

戻り値


RedirectedFrom

追加バージョン: v1.9 より前 request.RedirectedFrom

サーバーによってこのリクエストにリダイレクトされたリクエスト (存在する場合)

サーバーがリダイレクトで応答すると、Playwright は新しい Request オブジェクトを作成します。2 つのリクエストは、redirectedFrom() および redirectedTo() メソッドによって接続されています。複数のサーバーリダイレクトが発生した場合、redirectedFrom() を繰り返し呼び出すことで、リダイレクトチェーン全体を構築できます。

使用例

たとえば、ウェブサイト http://example.comhttps://example.com にリダイレクトする場合

var response = await page.GotoAsync("http://www.microsoft.com");
Console.WriteLine(response.Request.RedirectedFrom?.Url); // http://www.microsoft.com

ウェブサイト https://google.com にリダイレクトがない場合

var response = await page.GotoAsync("https://www.google.com");
Console.WriteLine(response.Request.RedirectedFrom?.Url); // null

戻り値


RedirectedTo

追加バージョン: v1.9 より前 request.RedirectedTo

サーバーがリダイレクトで応答した場合に、ブラウザによって発行された新しいリクエスト。

使用例

このメソッドは、Request.RedirectedFrom の反対です

Console.WriteLine(request.RedirectedFrom?.RedirectedTo == request); // True

戻り値


ResourceType

追加バージョン: v1.9 より前 request.ResourceType

レンダリングエンジンによって認識されたリクエストのリソースタイプが含まれています。ResourceType は、documentstylesheetimagemediafontscripttexttrackxhrfetcheventsourcewebsocketmanifestother のいずれかになります。

使用例

Request.ResourceType

戻り値


ResponseAsync

追加バージョン: v1.9 より前 request.ResponseAsync

一致する Response オブジェクトを返します。エラーのためにレスポンスが受信されなかった場合は null を返します。

使用例

await Request.ResponseAsync();

戻り値


SizesAsync

追加バージョン: v1.15 request.SizesAsync

指定されたリクエストのリソースサイズ情報を返します。

使用例

await Request.SizesAsync();

戻り値

  • Sizes#
    • requestBodySize int

      リクエストボディのサイズ (POST データペイロード、バイト単位)。ボディがない場合は 0 に設定されます。

    • requestHeadersSize int

      HTTP リクエストメッセージの先頭から、ボディ前の二重 CRLF (改行コード) まで (および含む) の合計バイト数。

    • responseBodySize int

      受信したレスポンスボディのサイズ (エンコード済み、バイト単位)。

    • responseHeadersSize int

      HTTP レスポンスメッセージの先頭から、ボディ前の二重 CRLF (改行コード) まで (および含む) の合計バイト数。


Timing

追加バージョン: v1.9 より前 request.Timing

指定されたリクエストのリソースタイミング情報を返します。タイミング値のほとんどはレスポンスで利用可能になり、responseEnd はリクエストが完了すると利用可能になります。詳細については、Resource Timing API を参照してください。

使用例

var request = await page.RunAndWaitForRequestFinishedAsync(async () =>
{
await page.GotoAsync("https://www.microsoft.com");
});
Console.WriteLine(request.Timing.ResponseEnd);

戻り値

  • Timing#
    • startTime [float]

      1970 年 1 月 1 日 00:00:00 UTC からの経過ミリ秒単位のリクエスト開始時刻

    • domainLookupStart [float]

      ブラウザがリソースのドメイン名ルックアップを開始する直前の時刻。値は startTime からの相対ミリ秒単位で指定されます。利用できない場合は -1。

    • domainLookupEnd [float]

      ブラウザがリソースのドメイン名ルックアップを開始した直後の時刻。値は startTime からの相対ミリ秒単位で指定されます。利用できない場合は -1。

    • connectStart [float]

      ユーザーエージェントがリソースを取得するためにサーバーへの接続を確立し始める直前の時刻。値は startTime からの相対ミリ秒単位で指定されます。利用できない場合は -1。

    • secureConnectionStart [float]

      ブラウザが現在の接続をセキュリティ保護するためのハンドシェイクプロセスを開始する直前の時刻。値は startTime からの相対ミリ秒単位で指定されます。利用できない場合は -1。

    • connectEnd [float]

      ユーザーエージェントがリソースを取得するためにサーバーへの接続を確立し始める直前の時刻。値は startTime からの相対ミリ秒単位で指定されます。利用できない場合は -1。

    • requestStart [float]

      ブラウザがサーバー、キャッシュ、またはローカルリソースからリソースをリクエストし始める直前の時刻。値は startTime からの相対ミリ秒単位で指定されます。利用できない場合は -1。

    • responseStart [float]

      ブラウザがサーバー、キャッシュ、またはローカルリソースからレスポンスの最初のバイトを受信した直後の時刻。値は startTime からの相対ミリ秒単位で指定されます。利用できない場合は -1。

    • responseEnd [float]

      ブラウザがリソースの最後のバイトを受信した直後、またはトランスポート接続が閉じられる直前のいずれか早い方の時刻。値は startTime からの相対ミリ秒単位で指定されます。利用できない場合は -1。


Url

追加バージョン: v1.9 より前 request.Url

リクエストの URL。

使用例

Request.Url

戻り値