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

Request

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

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

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

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

リクエストが 'redirect' レスポンスを受け取った場合、リクエストは 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);

引数

  • name string#

    ヘッダーの名前。

戻り値


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

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

使用法

request.postData();

戻り値


postDataBuffer

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

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

使用法

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.comhttps://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 は、documentstylesheetimagemediafontscripttexttrackxhrfetcheventsourcewebsocketmanifestother のいずれかになります。

使用法

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();

戻り値