Web Request
类:WebRequest¶
在其生命周期的各个阶段拦截并修改请求的内容。
进程:主进程
此类不从 'electron' 模块导出,只能作为 Electron API 中其他方法的返回值使用。
WebRequest 类的实例可通过 Session 的 webRequest 属性访问。
WebRequest 的方法接受一个可选的 filter 和一个 listener。当 API 事件发生时,会以 listener(details) 的形式调用 listener。details 对象描述了该请求。
⚠️ 只会使用最后附加的 listener。将 listener 设为 null 将取消订阅该事件。
filter 对象具有一个 urls 属性,它是一个 URL 模式数组,用于过滤掉与这些 URL 模式不匹配的请求。如果省略 filter,则匹配所有请求。
对于某些事件,会向 listener 传入一个 callback;当 listener 完成其工作后,应使用 response 对象调用该 callback。
下面是为请求添加 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(可选)listenerFunction | nulldetailsObjectidIntegerurlstringmethodstringwebContentsIdInteger(可选)webContentsWebContents(可选)frameWebFrameMain | null(可选)- 发起请求的 frame。如果在该 frame 发生导航后或被销毁后访问,则可能为null。initiatorOriginstring(可选)- 发起请求的来源(例如https://example.com;对于不透明来源,则为null)。在重定向过程中会保留原始请求中的该值;对于浏览器自身发起的请求,则不存在此字段。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(可选)listenerFunction | nulldetailsObjectidIntegerurlstringmethodstringwebContentsIdInteger(可选)webContentsWebContents(可选)frameWebFrameMain | null(可选)- 发出请求的 frame。 如果在该 frame 已导航或销毁后访问,则可能为null。initiatorOriginstring(可选)- 发起请求的来源(例如https://example.com;对于不透明来源则为null)。该值会在重定向过程中保留自原始请求;对于浏览器自身发起的请求,则不存在该字段。resourceTypestring - 可以是mainFrame、subFrame、stylesheet、script、image、font、object、xhr、ping、cspReport、media、webSocket或other。referrerstringtimestampDoubleresponseHeadersRecord\<string, string[]>(可选)fromCacheboolean - 指示响应是否从磁盘缓存中获取。statusCodeIntegerstatusLinestring
当收到响应体的第一个字节时,listener 将以 listener(details) 的形式被调用。对于 HTTP 请求,这意味着状态行和响应头已经可用。
webRequest.onBeforeRedirect([filter, ]listener)¶
filterWebRequestFilter(可选)listenerFunction | nulldetailsObjectidIntegerurlstringmethodstringwebContentsIdInteger(可选)webContentsWebContents(可选)frameWebFrameMain | null(可选)- 发出请求的 frame。 如果在该 frame 已导航或销毁后访问,则可能为null。initiatorOriginstring(可选)- 发起请求的来源(例如https://example.com;对于不透明来源则为null)。该值会在重定向过程中保留自原始请求;对于浏览器自身发起的请求,则不存在该字段。resourceTypestring - 可以是mainFrame、subFrame、stylesheet、script、image、font、object、xhr、ping、cspReport、media、webSocket或other。referrerstringtimestampDoubleresponseHeadersRecord\<string, string[]>(可选)fromCachebooleanstatusCodeIntegerstatusLinestringerrorstring
当请求完成时,将使用 listener(details) 调用 listener。
webRequest.onErrorOccurred([filter, ]listener)¶
filterWebRequestFilter(可选)listenerFunction | nulldetailsObjectidIntegerurlstringmethodstringwebContentsIdInteger(可选)webContentsWebContents(可选)frameWebFrameMain | null(可选)- 发起请求的 frame。如果在该 frame 已导航或已被销毁后访问,则可能为null。initiatorOriginstring(可选)- 发起请求的源(origin)(例如https://example.com,对于不透明源则为null)。此值在重定向过程中保留自原始请求;对于浏览器自身发起的请求,此字段不存在。resourceTypestring - 可以是mainFrame、subFrame、stylesheet、script、image、font、object、xhr、ping、cspReport、media、webSocket或other。referrerstringtimestampDoublefromCachebooleanerrorstring - 错误描述。
当发生错误时,将使用 listener(details) 调用 listener。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 el/electron