跳到主要内容
版本: 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。请注意,当数据太长或无法以解码形式轻松获得时,HTTPRequest.postData() 在此标志为 true 时可能仍然是 undefined。在这种情况下,请使用 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