跳到主要內容

Request

每當頁面傳送網路資源請求時,Page 都會發出以下事件序列

如果請求在某些時候失敗,則會發出 Page.onRequestFailed(handler) 事件,而不是 'requestfinished' 事件(並且可能代替 'response' 事件)。

注意

HTTP 錯誤回應,例如 404 或 503,從 HTTP 的觀點來看仍然是成功的回應,因此請求將以 'requestfinished' 事件完成。

如果請求收到 'redirect' 回應,則請求會以 requestfinished 事件成功完成,並向重新導向的 URL 發出新的請求。


方法

allHeaders

新增於:v1.15 request.allHeaders

包含與此請求關聯的所有請求 HTTP 標頭的物件。標頭名稱為小寫。

用法

Request.allHeaders();

回傳


failure

v1.9 之前新增 request.failure

除非此請求失敗(如 requestfailed 事件所報告),否則此方法會回傳 null

用法

所有失敗請求的記錄範例

page.onRequestFailed(request -> {
System.out.println(request.url() + " " + request.failure());
});

回傳


frame

v1.9 之前新增 request.frame

回傳啟動此請求的 Frame

用法

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

回傳

詳細資訊

請注意,在某些情況下,Frame 可能無法使用,此方法將會擲回例外。

  • 當請求源自 Service Worker 時。您可以使用 request.serviceWorker() 來檢查。
  • 當導覽請求在建立對應的 Frame 之前發出時。您可以使用 Request.isNavigationRequest() 來檢查。

以下範例處理所有情況


headerValue

新增於:v1.15 request.headerValue

回傳與名稱相符的標頭值。名稱不區分大小寫。

用法

Request.headerValue(name);

引數

回傳


headers

v1.9 之前新增 request.headers

包含請求 HTTP 標頭的物件。標頭名稱為小寫。請注意,此方法不會回傳與安全性相關的標頭,包括與 Cookie 相關的標頭。您可以使用 Request.allHeaders() 來取得包含 cookie 資訊的完整標頭清單。

用法

Request.headers();

回傳


headersArray

新增於:v1.15 request.headersArray

包含與此請求關聯的所有請求 HTTP 標頭的陣列。與 Request.allHeaders() 不同,標頭名稱「不」為小寫。具有多個條目的標頭(例如 Set-Cookie)會在陣列中多次顯示。

用法

Request.headersArray();

回傳


isNavigationRequest

v1.9 之前新增 request.isNavigationRequest

此請求是否正在驅動 Frame 的導覽。

某些導覽請求會在建立對應的 Frame 之前發出,因此無法使用 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();

回傳


redirectedFrom

v1.9 之前新增 request.redirectedFrom

伺服器將此請求重新導向到的請求 (若有)。

當伺服器以重新導向回應時,Playwright 會建立新的 Request 物件。這兩個請求透過 redirectedFrom()redirectedTo() 方法連接。當發生多次伺服器重新導向時,可以透過重複呼叫 redirectedFrom() 來建構完整的重新導向鏈。

用法

例如,如果網站 http://example.com 重新導向到 https://example.com

Response response = page.navigate("http://example.com");
System.out.println(response.request().redirectedFrom().url()); // "http://example.com"

如果網站 https://google.com 沒有重新導向

Response response = page.navigate("https://google.com");
System.out.println(response.request().redirectedFrom()); // null

回傳


redirectedTo

v1.9 之前新增 request.redirectedTo

如果伺服器以重新導向回應,則瀏覽器發出的新請求。

用法

此方法與 Request.redirectedFrom() 相反

System.out.println(request.redirectedFrom().redirectedTo() == request); // true

回傳


resourceType

v1.9 之前新增 request.resourceType

包含轉譯引擎感知的請求資源類型。ResourceType 將是以下其中一項:documentstylesheetimagemediafontscripttexttrackxhrfetcheventsourcewebsocketmanifestother

用法

Request.resourceType();

回傳


response

v1.9 之前新增 request.response

回傳相符的 Response 物件,如果因為錯誤而未收到回應,則回傳 null

用法

Request.response();

回傳


sizes

新增於:v1.15 request.sizes

回傳指定請求的資源大小資訊。

用法

Request.sizes();

回傳

  • Sizes#
    • requestBodySize int

      請求本文(POST 資料酬載)的大小 (以位元組為單位)。如果沒有本文,則設定為 0。

    • requestHeadersSize int

      從 HTTP 請求訊息的開頭到本文之前的雙 CRLF(包括)的總位元組數。

    • responseBodySize int

      接收到的回應本文(已編碼)的大小 (以位元組為單位)。

    • responseHeadersSize int

      從 HTTP 回應訊息的開頭到本文之前的雙 CRLF(包括)的總位元組數。


timing

v1.9 之前新增 request.timing

回傳指定請求的資源計時資訊。大多數計時值在回應後可用,responseEnd 在請求完成時可用。在 Resource Timing API 找到更多資訊。

用法

page.onRequestFinished(request -> {
Timing timing = request.timing();
System.out.println(timing.responseEnd - timing.startTime);
});
page.navigate("http://example.com");

回傳

  • Timing#
    • startTime double

      請求開始時間 (以毫秒為單位),自 1970 年 1 月 1 日 00:00:00 UTC 以來經過的時間

    • domainLookupStart double

      瀏覽器開始資源的網域名稱查閱之前的時間。值以相對於 startTime 的毫秒為單位,如果不可用則為 -1。

    • domainLookupEnd double

      瀏覽器開始資源的網域名稱查閱之後的時間。值以相對於 startTime 的毫秒為單位,如果不可用則為 -1。

    • connectStart double

      使用者代理程式開始建立與伺服器的連線以擷取資源之前的時間。值以相對於 startTime 的毫秒為單位,如果不可用則為 -1。

    • secureConnectionStart double

      瀏覽器開始交握程序以保護目前連線安全之前的時間。值以相對於 startTime 的毫秒為單位,如果不可用則為 -1。

    • connectEnd double

      使用者代理程式開始建立與伺服器的連線以擷取資源之前的時間。值以相對於 startTime 的毫秒為單位,如果不可用則為 -1。

    • requestStart double

      瀏覽器開始從伺服器、快取或本機資源請求資源之前的時間。值以相對於 startTime 的毫秒為單位,如果不可用則為 -1。

    • responseStart double

      瀏覽器從伺服器、快取或本機資源接收到回應的第一個位元組之後的時間。值以相對於 startTime 的毫秒為單位,如果不可用則為 -1。

    • responseEnd double

      瀏覽器接收到資源的最後一個位元組之後,或在傳輸連線關閉之前的時間 (以先到者為準)。值以相對於 startTime 的毫秒為單位,如果不可用則為 -1。


url

v1.9 之前新增 request.url

請求的 URL。

用法

Request.url();

回傳