类:WebRequest
类:WebRequest
在请求的生命周期的各个阶段拦截和修改请求的内容。
进程:主进程
此类未从 'electron' 模块导出。它仅作为 Electron API 中其他方法的返回值可用。
WebRequest 类的实例通过使用 Session 的 webRequest 属性来访问。
WebRequest 的方法接受一个可选的 filter 和一个 listener。当 API 事件发生时,将使用 listener(details) 调用 listener。details 对象描述了请求。
⚠️ 只有最后附加的 listener 才会被使用。将 null 作为 listener 会取消订阅该事件。
filter 对象有一个 urls 属性,它是一个 URL 模式的数组,用于过滤掉不匹配 URL 模式的请求。如果省略 filter,则所有请求都将被匹配。
对于某些事件,listener 会传递一个 callback,当 listener 完成工作后,应使用 response 对象调用它。
为请求添加 User-Agent 头的示例
const { session } = require('electron')
// Modify the user agent for all requests to the following urls.
const filter = {
urls: ['https://*.github.com/*', '*://electron.github.io/*']
}
session.defaultSession.webRequest.onBeforeSendHeaders(filter, (details, callback) => {
details.requestHeaders['User-Agent'] = 'MyAgent'
callback({ requestHeaders: details.requestHeaders })
})
实例方法
WebRequest 实例上有以下方法可用
webRequest.onBeforeRequest([filter, ]listener)
filterWebRequestFilter (可选)listener函数 | nulldetailsObjectidIntegerurlstringmethod字符串webContentsId整数 (可选)webContentsWebContents (可选)frameWebFrameMain | null (可选) - 请求的 frame。如果访问时 frame 已导航或销毁,则可能为null。resourceType字符串 - 可以是mainFrame、subFrame、stylesheet、script、image、font、object、xhr、ping、cspReport、media、webSocket或other。referrer字符串timestamp双精度浮点数uploadDataUploadData[]
callbackFunctionresponse对象cancel布尔值 (可选)redirectURL字符串 (可选) - 原始请求将被阻止发送或完成,而是重定向到给定的 URL。
当请求即将发生时,将使用 listener(details, callback) 调用 listener。
uploadData 是一个 UploadData 对象数组。
callback 必须使用 response 对象进行调用。
一些有效的 urls 示例
'<all_urls>'
'http://foo:1234/'
'http://foo.com/'
'http://foo:1234/bar'
'*://*/*'
'*://example.com/*'
'*://example.com/foo/*'
'http://*.foo:1234/'
'file://foo:1234/bar'
'http://foo:*/'
'*://www.foo.com/'
webRequest.onBeforeSendHeaders([filter, ]listener)
filterWebRequestFilter (可选)listener函数 | nulldetailsObjectidIntegerurlstringmethod字符串webContentsId整数 (可选)webContentsWebContents (可选)frameWebFrameMain | null (可选) - 请求的 frame。如果访问时 frame 已导航或销毁,则可能为null。resourceType字符串 - 可以是mainFrame、subFrame、stylesheet、script、image、font、object、xhr、ping、cspReport、media、webSocket或other。referrer字符串timestamp双精度浮点数uploadDataUploadData[] (可选)requestHeadersRecord<string, string>
callbackFunctionbeforeSendResponse对象cancel布尔值 (可选)requestHeadersRecord<string, string | string[]> (可选) - 提供时,请求将使用这些头信息发送。
在发送 HTTP 请求之前,一旦请求头可用,将使用 listener(details, callback) 调用 listener。这可能发生在与服务器建立 TCP 连接之后,但在发送任何 HTTP 数据之前。
callback 必须使用 response 对象进行调用。
webRequest.onSendHeaders([filter, ]listener)
filterWebRequestFilter (可选)listener函数 | nulldetailsObjectidIntegerurlstringmethod字符串webContentsId整数 (可选)webContentsWebContents (可选)frameWebFrameMain | null (可选) - 请求的 frame。如果访问时 frame 已导航或销毁,则可能为null。resourceType字符串 - 可以是mainFrame、subFrame、stylesheet、script、image、font、object、xhr、ping、cspReport、media、webSocket或other。referrer字符串timestamp双精度浮点数requestHeadersRecord<string, string>
在请求即将发送到服务器之前,将使用 listener(details) 调用 listener,此时对 onBeforeSendHeaders 响应的修改是可见的。
webRequest.onHeadersReceived([filter, ]listener)
filterWebRequestFilter (可选)listener函数 | nulldetailsObjectidIntegerurlstringmethod字符串webContentsId整数 (可选)webContentsWebContents (可选)frameWebFrameMain | null (可选) - 请求的 frame。如果访问时 frame 已导航或销毁,则可能为null。resourceType字符串 - 可以是mainFrame、subFrame、stylesheet、script、image、font、object、xhr、ping、cspReport、media、webSocket或other。referrer字符串timestamp双精度浮点数statusLine字符串statusCode整数responseHeadersRecord<string, string[]> (可选)
callbackFunctionheadersReceivedResponse对象cancel布尔值 (可选)responseHeadersRecord<string, string | string[]> (可选) - 提供时,假定服务器已使用这些头信息进行响应。statusLine字符串 (可选) - 如果覆盖responseHeaders以更改头信息状态,则应提供此项,否则将使用原始响应头信息的状态。
当接收到请求的 HTTP 响应头时,将使用 listener(details, callback) 调用 listener。
callback 必须使用 response 对象进行调用。
webRequest.onResponseStarted([filter, ]listener)
filterWebRequestFilter (可选)listener函数 | nulldetailsObjectidIntegerurlstringmethod字符串webContentsId整数 (可选)webContentsWebContents (可选)frameWebFrameMain | null (可选) - 请求的 frame。如果访问时 frame 已导航或销毁,则可能为null。resourceType字符串 - 可以是mainFrame、subFrame、stylesheet、script、image、font、object、xhr、ping、cspReport、media、webSocket或other。referrer字符串timestamp双精度浮点数responseHeadersRecord<string, string[]> (可选)fromCache布尔值 - 指示响应是否从磁盘缓存中获取。statusCode整数statusLine字符串
当接收到响应体的第一个字节时,将使用 listener(details) 调用 listener。对于 HTTP 请求,这意味着状态行和响应头是可用的。
webRequest.onBeforeRedirect([filter, ]listener)
filterWebRequestFilter (可选)listener函数 | nulldetailsObjectidIntegerurlstringmethod字符串webContentsId整数 (可选)webContentsWebContents (可选)frameWebFrameMain | null (可选) - 请求的 frame。如果访问时 frame 已导航或销毁,则可能为null。resourceType字符串 - 可以是mainFrame、subFrame、stylesheet、script、image、font、object、xhr、ping、cspReport、media、webSocket或other。referrer字符串timestamp双精度浮点数redirectURL字符串statusCode整数statusLine字符串ip字符串 (可选) - 请求实际发送到的服务器 IP 地址。fromCache布尔值responseHeadersRecord<string, string[]> (可选)
当服务器发起的重定向即将发生时,将使用 listener(details) 调用 listener。
webRequest.onCompleted([filter, ]listener)
filterWebRequestFilter (可选)listener函数 | nulldetailsObjectidIntegerurlstringmethod字符串webContentsId整数 (可选)webContentsWebContents (可选)frameWebFrameMain | null (可选) - 请求的 frame。如果访问时 frame 已导航或销毁,则可能为null。resourceType字符串 - 可以是mainFrame、subFrame、stylesheet、script、image、font、object、xhr、ping、cspReport、media、webSocket或other。referrer字符串timestamp双精度浮点数responseHeadersRecord<string, string[]> (可选)fromCache布尔值statusCode整数statusLine字符串error字符串
请求完成时,将使用 listener(details) 调用 listener。
webRequest.onErrorOccurred([filter, ]listener)
filterWebRequestFilter (可选)listener函数 | nulldetailsObjectidIntegerurlstringmethod字符串webContentsId整数 (可选)webContentsWebContents (可选)frameWebFrameMain | null (可选) - 请求的 frame。如果访问时 frame 已导航或销毁,则可能为null。resourceType字符串 - 可以是mainFrame、subFrame、stylesheet、script、image、font、object、xhr、ping、cspReport、media、webSocket或other。referrer字符串timestamp双精度浮点数fromCache布尔值error字符串 - 错误描述。
发生错误时,将使用 listener(details) 调用 listener。