跳至主要內容
版本:23.11.1

HTTPRequest 類別

代表由網頁發送的 HTTP 請求。

簽名

export declare abstract class HTTPRequest

備註

每當網頁發送請求時(例如請求網路資源),Puppeteer 的 page 會發出以下事件

  • request:當網頁發出請求時發出。

  • requestfinished - 當回應主體下載完成且請求完成時發出。

如果請求在某個時間點失敗,則會發出 requestfailed 事件,而不是 requestfinished 事件。

所有這些事件都提供一個 HTTPRequest 的實例,代表發生的請求

page.on('request', request => ...)

注意:HTTP 錯誤回應(例如 404 或 503)從 HTTP 的角度來看仍然是成功的回應,因此請求將以 requestfinished 事件完成。

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

此類別的建構函式標記為內部。第三方程式碼不應直接呼叫建構函式或建立擴充 HTTPRequest 類別的子類別。

屬性

屬性

修飾詞

類型

描述

client

唯讀

CDPSession

(實驗性) 警告!使用此客戶端可能會破壞 Puppeteer。請謹慎使用。

方法

方法

修飾詞

描述

abort(errorCode, priority)

中止請求。

備註

若要使用此方法,應使用 Page.setRequestInterception() 啟用請求攔截。如果未啟用,此方法會立即擲回例外狀況。

abortErrorReason()

中止請求的最新原因

continue(overrides, priority)

使用可選的請求覆寫繼續請求。

備註

若要使用此方法,應使用 Page.setRequestInterception() 啟用請求攔截。

如果未啟用請求攔截,則會立即擲回例外狀況。

continueRequestOverrides()

如果允許繼續攔截(即,未呼叫 abort()respond()),將使用的 ContinueRequestOverrides

enqueueInterceptAction(pendingHandler)

將非同步請求處理常式新增至處理佇列。無法保證延遲的處理常式會以任何特定順序執行,但保證它們會在請求攔截完成之前解析。

failure()

存取有關請求失敗的資訊。

備註

fetchPostData()

從瀏覽器擷取請求的 POST 資料。

finalizeInterceptions()

等待擱置的攔截處理常式,然後決定如何完成請求攔截。

frame()

啟動請求的框架,如果導覽至錯誤頁面,則為 null。

hasPostData()

當請求具有 POST 資料時為 true。請注意,當資料過長或無法以解碼形式輕易取得時,即使此旗標為 true,HTTPRequest.postData() 也可能仍然是未定義的。在這種情況下,請使用 HTTPRequest.fetchPostData()

headers()

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

initiator()

請求的啟動器。

interceptResolutionState()

描述目前解析動作和優先順序的 InterceptResolutionState 物件。

InterceptResolutionState 包含:action: InterceptResolutionAction priority?: number

InterceptResolutionAction 是以下其中之一:abortrespondcontinuedisablednonealready-handled

isInterceptResolutionHandled()

如果已處理攔截解析則為 true,否則為 false

isNavigationRequest()

如果請求是目前框架導覽的驅動程式,則為 True。

method()

使用的方法 (GETPOST 等)

postData()

請求的 POST 主體(如果有的話)。

redirectChain()

redirectChain 是啟動以擷取資源的請求鏈。

備註

redirectChain 在同一鏈的所有請求之間共用。

例如,如果網站 http://example.com 有一個單一重新導向到 https://example.com,則鏈將包含一個請求

const response = await page.goto('http://example.com');
const chain = response.request().redirectChain();
console.log(chain.length); // 1
console.log(chain[0].url()); // 'http://example.com'

如果網站 https://google.com 沒有重新導向,則鏈將為空

const response = await page.goto('https://google.com');
const chain = response.request().redirectChain();
console.log(chain.length); // 0
resourceType()

包含轉譯引擎感知到的請求資源類型。

respond(response, priority)

使用給定的回應完成請求。

備註

若要使用此方法,應使用 Page.setRequestInterception() 啟用請求攔截。

如果未啟用請求攔截,則會立即擲回例外狀況。

response()

相符的 HTTPResponse 物件,如果尚未收到回應,則為 null。

responseForRequest()

如果允許攔截回應(即,未呼叫 abort()),則使用的 ResponseForRequest

url()

請求的 URL