Puppeteer 中文文档v25.8.0

HTTPRequest 类

表示由页面发出的 HTTP 请求。

签名

export declare abstract class HTTPRequest

备注

每当页面发出请求(例如为获取网络资源)时,Puppeteer的page都会触发以下事件:

  • request:在页面发出请求时触发。

  • requestfinished:当响应主体下载完成且请求结束时触发。

如果请求在某个时刻失败,则会触发 requestfailed 事件,而不是 requestfinished 事件。

所有这些事件都会提供代表所发生请求的 HTTPRequest 实例:

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

注意:从 HTTP 的角度来看,404 或 503 等 HTTP 错误响应仍然是成功响应,因此请求会以 requestfinished 事件完成。

如果请求收到“redirect”响应,请求会通过 requestfinished 事件成功完成,并向重定向后的 URL 发出新请求。

此类的构造函数被标记为内部(internal)。第三方代码不应直接调用构造函数,也不应创建继承 HTTPRequest 类的子类。

属性

属性

修饰符

类型

说明

client

readonly

CDPSession

(实验性) 警告!使用此 client 可能会破坏 Puppeteer。请谨慎使用。

方法

方法

修饰符

说明

abort(errorCode, priority)

中止一个请求。

备注:

要使用此方法,需要通过 Page.setRequestInterception() 启用请求拦截。如果未启用,此方法会立即抛出异常。

abortErrorReason()

中止请求的最近一次原因

continue(overrides, priority)

使用可选的请求覆盖(overrides)继续请求。

备注:

要使用此方法,需要通过 Page.setRequestInterception() 启用请求拦截。

如果未启用请求拦截,会立即抛出异常。

continueRequestOverrides()

如果允许拦截继续(即未调用 abort()respond()),则将使用的 ContinueRequestOverrides

enqueueInterceptAction(pendingHandler)

将异步请求处理器添加到处理队列中。延迟的处理器不保证按任何特定顺序执行,但保证在请求拦截定案之前完成(resolve)。

failure()

访问有关请求失败的信息。

备注:

fetchPostData()

从浏览器获取请求的 POST 数据。

finalizeInterceptions()

等待待处理的拦截处理器,然后决定如何完成请求拦截。

frame()

发起请求的框架;如果正在导航到错误页面,则为 null。

hasPostData()

当请求包含 POST 数据时为 true。请注意,当此标志为 true 时,如果数据过长或不易以解码形式获取,HTTPRequest.postData() 仍可能为 undefined。在这种情况下,请使用 HTTPRequest.fetchPostData()

headers()

包含与请求关联的 HTTP 标头的对象。所有标头名称均为小写。

initiator()

请求的发起者(initiator)。

interceptResolutionState()

描述当前解析动作(action)和优先级(priority)的 InterceptResolutionState 对象。

InterceptResolutionState 包含:action: InterceptResolutionAction priority?: number

InterceptResolutionAction 是以下值之一:abortrespondcontinuedisablednonealready-handled

isInterceptResolutionHandled()

如果拦截解析已被处理,则为 true,否则为 false

isNavigationRequest()

如果请求是当前框架导航的驱动者,则为 true。

method()

使用的方法(GETPOST 等)

postData()

deprecated

已废弃:

请使用 HTTPRequest.fetchPostData()

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