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 で追加このリクエストに関連付けられたすべてのリクエスト HTTP ヘッダーを持つオブジェクト。ヘッダー名は小文字です。
使用法
await request.allHeaders();
戻り値
failure
v1.9 より前に追加このメソッドは、requestfailed イベントによって報告されたように、このリクエストが失敗した場合を除き、null
を返します。
使用法
失敗したすべてのリクエストのログ記録の例
page.on('requestfailed', request => {
console.log(request.url() + ' ' + request.failure().errorText);
});
戻り値
frame
v1.9 より前に追加このリクエストを開始した 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 で追加名前と一致するヘッダーの値を返します。名前は大文字と小文字を区別しません。
使用法
await request.headerValue(name);
引数
戻り値
headers
v1.9 より前に追加リクエスト HTTP ヘッダーを持つオブジェクト。ヘッダー名は小文字です。このメソッドは、cookie 関連のものを含むセキュリティ関連のヘッダーを返さないことに注意してください。cookie 情報を含むヘッダーの完全なリストについては、request.allHeaders() を使用できます。
使用法
request.headers();
戻り値
headersArray
v1.15 で追加このリクエストに関連付けられたすべてのリクエスト HTTP ヘッダーを持つ配列。request.allHeaders() とは異なり、ヘッダー名は大文字と小文字を区別しません。Set-Cookie
など、複数のエントリを持つヘッダーは、配列に複数回表示されます。
使用法
await request.headersArray();
戻り値
isNavigationRequest
v1.9 より前に追加このリクエストがフレームのナビゲーションを駆動しているかどうか。
一部のナビゲーションリクエストは、対応するフレームが作成される前に発行されるため、request.frame() は利用できません。
使用法
request.isNavigationRequest();
戻り値
method
v1.9 より前に追加リクエストのメソッド (GET、POST など)
使用法
request.method();
戻り値
postData
v1.9 より前に追加リクエストのポストボディ (存在する場合)。
使用法
request.postData();
戻り値
postDataBuffer
v1.9 より前に追加リクエストのポストボディ (バイナリ形式、存在する場合)。
使用法
request.postDataBuffer();
戻り値
postDataJSON
v1.9 より前に追加form-urlencoded
および JSON の解析済みリクエストボディを返します (フォールバックとして存在する場合)。
レスポンスが application/x-www-form-urlencoded
の場合、値のキー/値オブジェクトが返されます。それ以外の場合は JSON として解析されます。
使用法
request.postDataJSON();
戻り値
redirectedFrom
v1.9 より前に追加サーバーによってこのリクエストにリダイレクトされたリクエスト (存在する場合)。
サーバーがリダイレクトで応答すると、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.redirectedFrom() の反対です
console.log(request.redirectedFrom().redirectedTo() === request); // true
戻り値
resourceType
v1.9 より前に追加レンダリングエンジンによって認識されたリクエストのリソースタイプが含まれています。ResourceType は、document
、stylesheet
、image
、media
、font
、script
、texttrack
、xhr
、fetch
、eventsource
、websocket
、manifest
、other
のいずれかになります。
使用法
request.resourceType();
戻り値
response
v1.9 より前に追加一致する Response オブジェクトを返します。エラーによりレスポンスが受信されなかった場合は null
を返します。
使用法
await request.response();
戻り値
serviceWorker
v1.24 で追加リクエストを実行している Service Worker。
使用法
request.serviceWorker();
戻り値
詳細
このメソッドは Chromium のみです。他のブラウザーで使用しても安全ですが、常に null
になります。
Service Worker で発生したリクエストには、request.frame() は利用できません。
sizes
v1.15 で追加指定されたリクエストのリソースサイズ情報を返します。
使用法
await request.sizes();
戻り値
- Promise<Object>#
-
requestBodySize
numberリクエストボディのサイズ (POST データペイロード) (バイト単位)。ボディがない場合は 0 に設定されます。
-
requestHeadersSize
numberHTTP リクエストメッセージの開始から、ボディの前の二重 CRLF まで (およびそれを含む) の合計バイト数。
-
responseBodySize
number受信したレスポンスボディのサイズ (エンコード済み) (バイト単位)。
-
responseHeadersSize
numberHTTP レスポンスメッセージの開始から、ボディの前の二重 CRLF まで (およびそれを含む) の合計バイト数。
-
timing
v1.9 より前に追加指定されたリクエストのリソースタイミング情報を返します。タイミング値のほとんどはレスポンス時に利用可能になり、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
number1970 年 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 より前に追加リクエストの URL。
使用法
request.url();
戻り値