会话,缓存和代理等控制
管理浏览器 session ,Cookie,缓存,代理设置等。
进程: 主进程
session模块可以用来创建新的 Session对象,你也可以通过使用 webContents 的 session属性或模块访问现有页面的 session.
const {BrowserWindow} = require('electron')
let win = new BrowserWindow({width: 800, height: 600})
win.loadURL('http://github.com')
const ses = win.webContents.session
console.log(ses.getUserAgent())可以在 session 模块中创建一个 Session 对象 :
const {session} = require('electron')
const ses = session.fromPartition('persist:name')
console.log(ses.getUserAgent())方法
session.fromPartition(partition[, options])
session.fromPartition(partition[, options])用途:获取来自
partition字符串的Session实例(Session)
partitionStringoptionsObjectcacheBoolean - 是否启用缓存
如果存在一个具有相同 partition的 Session时,它将被返回;否则将使用 options创建一个新的 Session实例。
如果 partition以 persist:前缀,该页面将使用一个持久会话,该会话可用于应用程序中具有相同 partition的所有页面。
如果 partition没有 persist:前缀,该页面将使用内存中会话。
如果 partition为空,那么将返回应用程序的默认会话。
要用 options创建一个 Session, 您必须确保带有 partition的 Session从来没有被使用过. 因为没有办法改变现有 Session 对象中的 options。
属性
session.defaultSession
session.defaultSession属性:返回应用程序的默认
Session对象
事件
事件: 'will-download'
触发:Electron 将要从
webContents下载item时
eventEventitemDownloadItemwebContentsWebContents
调用 event.preventDefault() 可以取消下载, item将不能从进程的下一刻开始。
实例方法
ses.getCacheSize(callback)
ses.getCacheSize(callback)用途:获取当前缓存大小并调用
callback
callbackFunctionsizeInteger - 缓存大小(字节)
ses.clearCache(callback)
ses.clearCache(callback)用途:清除会话的HTTP缓存并调用
callback
callbackFunction
ses.clearStorageData([options, callback])
ses.clearStorageData([options, callback])用途:清除Web存储的数据
optionsObject (可选)originString - 应该遵循window.location.origin的格式scheme://host:port。storagesString[] - 要清除的存储类型, 可以包含 :appcache,cookies,filesystem,indexdb,localstorage,shadercache,websql,serviceworkersquotasString[] - 要清除的配额类型, 可以包含:temporary,persistent,syncable.
callbackFunction (可选) - 操作完成时调用.
ses.flushStorageData()
ses.flushStorageData()用途:将没有写入的DOMStorage数据写入磁盘
ses.setProxy(config, callback)
ses.setProxy(config, callback)用途:设置代理并调用
callback
configObjectpacScriptString - 与 PAC 文件相关的 URL.proxyRulesString - 要使用的代理规则.proxyBypassRulesString - 应绕过代理设置的网址规则。
callbackFunction - 操作完成时调用.
当 pacScript 和 proxyRules 一起提供时,将忽略 proxyRules,并应用 pacScript 配置 .
proxyRules 需要遵循下面的规则:
例子:
http=foopy:80;ftp=foopy2- 为http://使用HTTP代理foopy:80, 为ftp://使用HTTP代理foopy2:80.foopy:80- 为所有 URL 使用HTTP代理foopy:80.foopy:80,bar,direct://- 为所有 URL 使用HTTP代理foopy:80, 如果foopy:80不可用,则切换使用bar, 再往后就不使用代理了.socks4://foopy- 为所有 URL 使用SOCKS4代理foopy:1080.http=foopy,socks5://bar.com- 为所有 URL 使用HTTP代理foopy, 如果foopy不可用,则切换到SOCKS5代理bar.com.http=foopy,direct://- 为所有http url 使用 HTTP 代理,如果foopy不可用,则不使用代理.http=foopy;socks=foopy2- 为所有http url 使用foopy代理,为所有其他 url 使用socks4://foopy2代理.proxyBypassRules是一个以逗号分隔的规则列表,如下所述:[ URL_SCHEME "://" ] HOSTNAME_PATTERN [ ":" <port> ]匹配与所有与HOSTNAME_PATTERN模式相匹配的主机名。如:"foobar.com", "foobar.com", ".foobar.com", "foobar.com:99", "https://x..y.com:99""." HOSTNAME_SUFFIX_PATTERN [ ":" PORT ]匹配特定域后缀。如:".google.com", ".com", "http://.google.com"
[ SCHEME "://" ] IP_LITERAL [ ":" PORT ]匹配作为IP地址文字的网址。如:"127.0.1", "[0:0::1]", "[::1]", "http://[::1]:99"IP_LITERAL/PREFIX_LENGHT_IN_BITS匹配到指定范围之间的IP字面值的任何URL。 IP范围使用CIDR表示法指定。如:"192.168.1.1/16", "fefe:13::abc/33".<local>匹配本地地址。即匹配"127.0.0.1", "::1", "localhost"之一。
ses.resolveProxy(url, callback)
ses.resolveProxy(url, callback)用途:解析
url的代理信息并调用callback
urlURLcallbackFunctionproxyObject
ses.setDownloadPath(path)
ses.setDownloadPath(path)用途:设置下载目录
pathString - 下载地址
下载目录默认是应用所在目录里的 Downloads文件夹.
ses.enableNetworkEmulation(options)
ses.enableNetworkEmulation(options)用途:通过
session的给定配置模拟网络
optionsObjectofflineBoolean - 是否模拟网络中断。默认为falselatencyDouble (可选) -每毫秒的 RTT。默认为0,禁用延迟调节。downloadThroughputDouble (可选) -下载速率(以Bps为单位)。默认值为0,禁用下载限制。uploadThroughputDouble (可选) - 上传速率(以Bps为单位)。默认值为0,禁用上传限制。
ses.disableNetworkEmulation()
ses.disableNetworkEmulation()用途:重置为默认网络配置并停止所有已经使用
session的活跃模拟网络
ses.setCertificateVerifyProc(proc)
ses.setCertificateVerifyProc(proc)用途:每当请求服务器证书验证时为
session验证证书并调用callback接收结果
procFunctionrequestObjecthostnameStringcertificateCertificateerrorString - 验证结果.
callbackFunctionverificationResultInteger - 证书错误码.以下为常见错误代码:0- 表示成功并禁用证书Transperancy验证-2- 表示失败-3- 使用chrome的验证结果。,
callback(0)来接收证书 ,callback(-2)来拒绝验证证书.,setCertificateVerifyProc(null),则恢复为默认证书验证过程。
ses.setPermissionRequestHandler(handler)
ses.setPermissionRequestHandler(handler)用途:设置可以用于响应
session权限请求的处理程序并通过callback(true)允许或callback(false)拒绝该权限
handlerFunctionwebContentsWebContents - WebContents 请求权限.permissionString -枚举了'media','geolocation','notifications','midiSysex','pointerLock','fullscreen','openExternal'.callbackFunctionpermissionGrantedBoolean -允许或拒绝该权限
ses.clearHostResolverCache([callback])
ses.clearHostResolverCache([callback])用途:清除主机解析器缓存
callbackFunction (可选) - 操作完成时调用.
ses.allowNTLMCredentialsForDomains(domains)
ses.allowNTLMCredentialsForDomains(domains)用途:动态设置是否始终发送HTTP NTLM或协商身份验证的凭据
domainsString - 启用集成身份验证的服务器的逗号分隔列表。
ses.setUserAgent(userAgent[, acceptLanguages])
ses.setUserAgent(userAgent[, acceptLanguages])用途:覆盖此会话的
userAgent和acceptLanguages
userAgentStringacceptLanguagesString (可选) 以逗号分隔的语言列表,例如en-US,fr,de,ko,zh-CN,ja。
该方法不会影响现有 WebContents,每个 WebContents可以使用 webContents.setUserAgent来覆盖会话范围的 userAgent。
ses.getUserAgent()
ses.getUserAgent()用途:获取此会话的
userAgent(String)
ses.getBlobData(identifier, callback)
ses.getBlobData(identifier, callback)用途:获取与
identifier相关联的blob数据(Blob)
identifierString - Valid UUID.callbackFunctionresultBuffer - Blob data.
ses.createInterruptedDownload(options)
ses.createInterruptedDownload(options)用途:允许从以前的
Session恢复已取消或已中断的下载
optionsObjectpathString - 下载的绝对路径urlChainString[] - 完整的下载链接mimeTypeString (可选)offsetInteger - 下载的开始范围lengthInteger - 下载大小lastModifiedString - Last-Modified标头值eTagString - ETag头值。startTimeDouble (可选) - 秒级的下载时间
API将生成可以用will-download进行访问的DownloadItem事件。该事件没有任何可关联的 WebContents且它的初始状态将被 中断。
只有当在DownloadItem上调用 resume API时,下载将开始。
ses.clearAuthCache(options[, callback])
ses.clearAuthCache(options[, callback])用途:清除会话的HTTP身份验证缓存
options(RemovePassword | RemoveClientCertificate)callbackFunction (可选) - 操作完成时调用
实例属性
ses.cookies
ses.cookies属性:此会话的Cookie对象
ses.webRequest
ses.webRequest属性:此会话的WebRequest对象
ses.protocol
ses.protocol属性:此会话的Protocol对象(protocol模块的实例)
Last updated
Was this helpful?