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

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.com`が`https://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まで (含む) の合計バイト数。

    • 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

戻り値