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

Request

ページがネットワークリソースの要求を送信するたびに、Pageから以下のイベントシーケンスが発行されます

  • 要求がページによって発行されたときにPage.Requestが発行されます。
  • 要求の応答ステータスとヘッダーが受信されたときにPage.Responseが発行されます。
  • 応答本体がダウンロードされ、要求が完了したときにPage.RequestFinishedが発行されます。

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

404や503のようなHTTPエラー応答は、HTTPの観点からは依然として成功した応答であるため、要求は'requestfinished'イベントで完了します。

要求が「リダイレクト」応答を受け取ると、要求は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);

引数

戻り値


Headers

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

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

使用方法

Request.Headers

戻り値


HeadersArrayAsync

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

この要求に関連付けられたすべてのHTTPヘッダーを含む配列です。Request.AllHeadersAsync()とは異なり、ヘッダー名は大文字と小文字が区別されます。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

リクエストのPOSTボディ(もしあれば)。

使用方法

Request.PostData

戻り値


PostDataBuffer

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

リクエストのPOSTボディのバイナリ形式(もしあれば)。

使用方法

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は次のいずれかになります: document, stylesheet, image, media, font, script, texttrack, xhr, fetch, eventsource, websocket, manifest, other

使用方法

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まで(CRLFを含む)の合計バイト数。

    • responseBodySize int

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

    • responseHeadersSize int

      HTTP応答メッセージの開始から、ボディの前の二重CRLFまで(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

戻り値