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

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

リクエストの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.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は次のいずれかになります: 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();

戻り値