类:WebRequest
类:WebRequest
在一个请求生命周期的不同阶段,截取和修改其内容。
Process: Main
This class is not exported from the 'electron' module. 它只能作为 Electron API 中其他方法的返回值。
使用 Session 的 WebRequest 属性访问 WebRequest 类的实例。
WebRequest 下的所有方法接收 filter 和 listener 两个参数。 当 API 中有事件被触发时, listener(details) 会被调用, details 中包含了请求的详细信息。
⚠️ 仅最后附加的 listener 会被使用。 设置 null 值到 listener 将取消事件订阅。
filter 对象具有一个 url 属性, 它是一个 url 模式数组, 用于筛选出与 url 模式不匹配的请求。 如果省略 filter, 则所有请求都将匹配。
对于某些事件, listener 是通过 callback 传递的, 当 listener 完成其工作时, 应使用 response 对象进行调用。
为 requests 添加 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 })
})
实例方法
以下事件会在Session实例触发。
webRequest.onBeforeRequest([filter, ]listener)
filterWebRequestFilter (optional)listenerFunction | nulldetailsObjectidIntegerurlstringmethodstringwebContentsIdInteger (可选)webContentsWebContents (可选)frameWebFrameMain | null (optional) - Requesting frame. May benullif accessed after the frame has either navigated or been destroyed.resourceTypestring - 可以是mainFrame,subFrame,stylesheet,script,image,font,object,xhr,ping,cspReport,media,webSocket或other。referrerstringtimestampDoubleuploadDataUploadData[]
callbackFunctionresponseObjectcancelboolean (可选)redirectURLstring (可选) - 原始请求被阻止发送或完成,而不是重定向到给定的URL。
当请求即将发生时,调用listener(details, callback)。
uploadData 是UploadData对象的一个数组。
必须使用 response 对象调用callback。
一些有效 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 (optional)listenerFunction | nulldetailsObjectidIntegerurlstringmethodstringwebContentsIdInteger (可选)webContentsWebContents (可选)frameWebFrameMain | null (optional) - Requesting frame. May benullif accessed after the frame has either navigated or been destroyed.resourceTypestring - 可以是mainFrame,subFrame,stylesheet,script,image,font,object,xhr,ping,cspReport,media,webSocket或other。referrerstringtimestampDoubleuploadDataUploadData[] (optional)requestHeadersRecord<string, string>
callbackFunctionbeforeSendResponseObjectcancelboolean (可选)requestHeadersRecord<string, string | string[]> (optional) - When provided, request will be made with these headers.
一旦请求头可用,在发送 HTTP 请求之前,listener 将以 listener(details, callback) 的形式被调用。 这可能发生在对服务器进行 TCP 连接之后,但在发送任何HTTP数据之前。
callback 必须使用 response 对象调用。
webRequest.onSendHeaders([filter, ]listener)
filterWebRequestFilter (optional)listenerFunction | nulldetailsObjectidIntegerurlstringmethodstringwebContentsIdInteger (可选)webContentsWebContents (可选)frameWebFrameMain | null (optional) - Requesting frame. May benullif accessed after the frame has either navigated or been destroyed.resourceTypestring - 可以是mainFrame,subFrame,stylesheet,script,image,font,object,xhr,ping,cspReport,media,webSocket或other。referrerstringtimestampDoublerequestHeadersRecord<string, string>
在请求发送到服务器之前,listener将以listener(details)的形式被调用,在该侦听器被出发前,上一个对 onBeforeSendHeaders 响应的修改是可见的。
webRequest.onHeadersReceived([filter, ]listener)
filterWebRequestFilter (optional)listenerFunction | nulldetailsObjectidIntegerurlstringmethodstringwebContentsIdInteger (可选)webContentsWebContents (可选)frameWebFrameMain | null (optional) - Requesting frame. May benullif accessed after the frame has either navigated or been destroyed.resourceTypestring - 可以是mainFrame,subFrame,stylesheet,script,image,font,object,xhr,ping,cspReport,media,webSocket或other。referrerstringtimestampDoublestatusLinestringstatusCodeIntegerresponseHeadersRecord<string, string[]> (optional)
callbackFunctionheadersReceivedResponseObjectcancelboolean (可选)responseHeadersRecord<string, string | string[]> (optional) - When provided, the server is assumed to have responded with these headers.statusLinestring (可选) - 当重写responseHeaders时应提供改变标头状态,否则将使用原始响应标头的状态。
当HTTP请求接收到报头后,会通过调用 listener(details, callback)方法来触发listener。
callback 必须使用 response 对象调用。
webRequest.onResponseStarted([filter, ]listener)
filterWebRequestFilter (optional)listenerFunction | nulldetailsObjectidIntegerurlstringmethodstringwebContentsIdInteger (可选)webContentsWebContents (可选)frameWebFrameMain | null (optional) - Requesting frame. May benullif accessed after the frame has either navigated or been destroyed.resourceTypestring - 可以是mainFrame,subFrame,stylesheet,script,image,font,object,xhr,ping,cspReport,media,webSocket或other。referrerstringtimestampDoubleresponseHeadersRecord<string, string[]> (optional)fromCacheboolean - 表明响应是取自硬盘缓存。statusCodeIntegerstatusLinestring
当收到响应体的第一个字节时, 将以 listener(details) 的形式来调用 listener。 对于 HTTP 请求而言,这意味着此时 HTTP 状态行和回应头已经可以读取了。
webRequest.onBeforeRedirect([filter, ]listener)
filterWebRequestFilter (optional)listenerFunction | nulldetailsObjectidIntegerurlstringmethodstringwebContentsIdInteger (可选)webContentsWebContents (可选)frameWebFrameMain | null (optional) - Requesting frame. May benullif accessed after the frame has either navigated or been destroyed.resourceTypestring - 可以是mainFrame,subFrame,stylesheet,script,image,font,object,xhr,ping,cspReport,media,webSocket或other。referrerstringtimestampDoubleredirectURLstringstatusCodeIntegerstatusLinestringipstring (可选) - 请求实际发送到的服务器 IP 地址。fromCachebooleanresponseHeadersRecord<string, string[]> (optional)
当服务器的初始重定向即将发生时,将以 listener(details)的方式调用listener。
webRequest.onCompleted([filter, ]listener)
filterWebRequestFilter (optional)listenerFunction | nulldetailsObjectidIntegerurlstringmethodstringwebContentsIdInteger (可选)webContentsWebContents (可选)frameWebFrameMain | null (optional) - Requesting frame. May benullif accessed after the frame has either navigated or been destroyed.resourceTypestring - 可以是mainFrame,subFrame,stylesheet,script,image,font,object,xhr,ping,cspReport,media,webSocket或other。referrerstringtimestampDoubleresponseHeadersRecord<string, string[]> (optional)fromCachebooleanstatusCodeIntegerstatusLinestringerrorstring
当请求完成时,将以 listener(details)的方式调用listener。
webRequest.onErrorOccurred([filter, ]listener)
filterWebRequestFilter (optional)listenerFunction | nulldetailsObjectidIntegerurlstringmethodstringwebContentsIdInteger (可选)webContentsWebContents (可选)frameWebFrameMain | null (optional) - Requesting frame. May benullif accessed after the frame has either navigated or been destroyed.resourceTypestring - 可以是mainFrame,subFrame,stylesheet,script,image,font,object,xhr,ping,cspReport,media,webSocket或other。referrerstringtimestampDoublefromCachebooleanerrorstring - 错误描述.
当发生错误时,将以 listener(details)的方式调用listener。