Request
ページがネットワークリソースへのリクエストを送信するたびに、Page によって次のイベントシーケンスが発行されます。
- Page.Request は、リクエストがページによって発行されたときに発行されます。
- Page.Response は、リクエストに対するレスポンスステータスとヘッダーが受信されたとき (および受信された場合) に発行されます。
- Page.RequestFinished は、レスポンスボディがダウンロードされ、リクエストが完了したときに発行されます。
リクエストが途中で失敗した場合、'requestfinished'
イベント (および場合によっては 'response' イベントの代わりに)、Page.RequestFailed イベントが発行されます。
404 や 503 などの HTTP エラーレスポンスは、HTTP の観点からは依然として成功したレスポンスであるため、リクエストは 'requestfinished'
イベントで完了します。
リクエストが 'redirect' レスポンスを受け取った場合、リクエストは requestfinished
イベントで正常に完了し、リダイレクトされた URL に新しいリクエストが発行されます。
メソッド
AllHeadersAsync
追加バージョン: v1.15このリクエストに関連付けられたすべてのリクエスト HTTP ヘッダーを持つオブジェクト。ヘッダー名は小文字化されています。
使用例
await Request.AllHeadersAsync();
戻り値
Failure
追加バージョン: v1.9 より前このメソッドは、requestfailed
イベントによって報告されたように、このリクエストが失敗した場合を除き、null
を返します。
使用例
失敗したすべてのリクエストのログ記録の例
page.RequestFailed += (_, request) =>
{
Console.WriteLine(request.Failure);
};
戻り値
Frame
追加バージョン: v1.9 より前このリクエストを開始した Frame を返します。
使用例
var frameUrl = request.Frame.Url;
戻り値
詳細
場合によってはフレームが利用できず、このメソッドが例外をスローすることに注意してください。
- リクエストが Service Worker で発生した場合。
request.serviceWorker()
を使用して確認できます。 - ナビゲーションリクエストが、対応するフレームが作成される前に発行された場合。Request.IsNavigationRequest を使用して確認できます。
すべてのケースを処理する例を次に示します。
HeaderValueAsync
追加バージョン: v1.15名前と一致するヘッダーの値を返します。名前は大文字と小文字を区別しません。
使用例
await Request.HeaderValueAsync(name);
引数
戻り値
Headers
追加バージョン: v1.9 より前リクエスト HTTP ヘッダーを持つオブジェクト。ヘッダー名は小文字化されています。このメソッドは、cookie 関連のものを含むセキュリティ関連のヘッダーを返さないことに注意してください。cookie
情報を含むヘッダーの完全なリストについては、Request.AllHeadersAsync() を使用できます。
使用例
Request.Headers
戻り値
HeadersArrayAsync
追加バージョン: v1.15Request.AllHeadersAsync() とは異なり、ヘッダー名が小文字化されていない、このリクエストに関連付けられたすべてのリクエスト HTTP ヘッダーを持つ配列。Set-Cookie
など、複数のエントリを持つヘッダーは、配列に複数回表示されます。
使用例
await Request.HeadersArrayAsync();
戻り値
- IEnumerable<
HttpHeader
>#
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.12`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
にリダイレクトする場合
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.RedirectedFrom の反対です
Console.WriteLine(request.RedirectedFrom?.RedirectedTo == request); // True
戻り値
ResourceType
追加バージョン: v1.9 より前レンダリングエンジンによって認識されたリクエストのリソースタイプが含まれています。ResourceType は、document
、stylesheet
、image
、media
、font
、script
、texttrack
、xhr
、fetch
、eventsource
、websocket
、manifest
、other
のいずれかになります。
使用例
Request.ResourceType
戻り値
ResponseAsync
追加バージョン: v1.9 より前一致する Response オブジェクトを返します。エラーのためにレスポンスが受信されなかった場合は null
を返します。
使用例
await Request.ResponseAsync();
戻り値
SizesAsync
追加バージョン: v1.15指定されたリクエストのリソースサイズ情報を返します。
使用例
await Request.SizesAsync();
戻り値
- Sizes#
-
requestBodySize
intリクエストボディのサイズ (POST データペイロード、バイト単位)。ボディがない場合は 0 に設定されます。
-
requestHeadersSize
intHTTP リクエストメッセージの先頭から、ボディ前の二重 CRLF (改行コード) まで (および含む) の合計バイト数。
-
responseBodySize
int受信したレスポンスボディのサイズ (エンコード済み、バイト単位)。
-
responseHeadersSize
intHTTP レスポンスメッセージの先頭から、ボディ前の二重 CRLF (改行コード) まで (および含む) の合計バイト数。
-
Timing
追加バージョン: v1.9 より前指定されたリクエストのリソースタイミング情報を返します。タイミング値のほとんどはレスポンスで利用可能になり、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 より前リクエストの URL。
使用例
Request.Url
戻り値