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

Request

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

  • リクエストがページによって発行されたときにpage.on('request')が発行されます。
  • リクエストに対する応答ステータスとヘッダーが受信されたときにpage.on('response')が発行されます。
  • 応答ボディがダウンロードされ、リクエストが完了したときにpage.on('requestfinished')が発行されます。

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

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

リクエストが「リダイレクト」応答を受け取ると、リクエストは`requestfinished`イベントで正常に完了し、リダイレクトされたURLに新しいリクエストが発行されます。


メソッド

allHeaders

追加されたバージョン: v1.15 request.allHeaders

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

使用法

await request.allHeaders();

戻り値


failure

v1.9より前に追加 request.failure

`requestfailed`イベントで報告されたように、このリクエストが失敗していない限り、このメソッドは`null`を返します。

使用法

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

page.on('requestfailed', request => {
console.log(request.url() + ' ' + request.failure().errorText);
});

戻り値

  • null | Object#
    • errorText string

      人間が読めるエラーメッセージ、例: `'net::ERR_FAILED'`。


frame

v1.9より前に追加 request.frame

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

使用法

const frameUrl = request.frame().url();

戻り値

詳細

場合によってはフレームが利用できない場合があり、このメソッドはエラーをスローします。

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

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

if (request.serviceWorker())
console.log(`request ${request.url()} from a service worker`);
else if (request.isNavigationRequest())
console.log(`request ${request.url()} is a navigation request`);
else
console.log(`request ${request.url()} from a frame ${request.frame().url()}`);

headerValue

追加されたバージョン: v1.15 request.headerValue

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

使用法

await request.headerValue(name);

引数

戻り値


headers

v1.9より前に追加 request.headers

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

使用法

request.headers();

戻り値


headersArray

追加されたバージョン: v1.15 request.headersArray

このリクエストに関連付けられたすべてのリクエストHTTPヘッダーを含む配列です。request.allHeaders()とは異なり、ヘッダー名は大文字小文字を区別しません。`Set-Cookie`のように複数のエントリを持つヘッダーは、配列に複数回表示されます。

使用法

await request.headersArray();

戻り値


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.9より前に追加 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`にリダイレクトする場合

const response = await page.goto('http://example.com');
console.log(response.request().redirectedFrom().url()); // 'http://example.com'

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

const response = await page.goto('https://google.com');
console.log(response.request().redirectedFrom()); // null

戻り値


redirectedTo

v1.9より前に追加 request.redirectedTo

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

使用法

このメソッドはrequest.redirectedFrom()の逆です。

console.log(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();

戻り値


response

v1.9より前に追加 request.response

一致するResponseオブジェクトを返します。エラーにより応答が受信されなかった場合は`null`を返します。

使用法

await request.response();

戻り値


serviceWorker

追加バージョン: v1.24 request.serviceWorker

リクエストを実行しているService Worker

使用法

request.serviceWorker();

戻り値

詳細

このメソッドはChromiumのみです。他のブラウザで使用しても安全ですが、常に`null`になります。

Service Workerで発生したリクエストは、request.frame()を利用できません。


sizes

追加されたバージョン: v1.15 request.sizes

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

使用法

await request.sizes();

戻り値

  • Promise<Object>#
    • requestBodySize number

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

    • requestHeadersSize number

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

    • responseBodySize number

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

    • responseHeadersSize number

      HTTP応答メッセージの先頭からボディの前の二重CRLFまで (含む) の合計バイト数。


timing

v1.9より前に追加 request.timing

指定されたリクエストのリソースタイミング情報を返します。ほとんどのタイミング値は応答時に利用可能になり、`responseEnd`はリクエストが終了したときに利用可能になります。Resource Timing APIで詳細を確認してください。

使用法

const requestFinishedPromise = page.waitForEvent('requestfinished');
await page.goto('http://example.com');
const request = await requestFinishedPromise;
console.log(request.timing());

戻り値

  • Object#
    • startTime number

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

    • domainLookupStart number

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

    • domainLookupEnd number

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

    • connectStart number

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

    • secureConnectionStart number

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

    • connectEnd number

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

    • requestStart number

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

    • responseStart number

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

    • responseEnd number

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


url

v1.9より前に追加 request.url

リクエストのURL。

使用法

request.url();

戻り値