Electron中文手册
  • 文档概述
  • 开发指南目录
  • 构建说明(Linux)
  • 构建说明(macOS)
  • 构建说明(Windows)
  • 构建系统概述
  • 编码规范
  • 在 macOS 中调试
  • 在 Windows 中调试
  • 在C ++代码中使用clang-format
  • 在调试器中设置符号服务器
  • 源代码目录结构
  • Chrome升级清单
  • Chromium 开发指南
  • V8 开发指南
  • 教程目录
    • 关于 Electron
    • Electron 版本说明
    • API弃用说明
    • 快速入门
    • 支持的平台
    • 桌面环境集成
    • 系统通知
    • 离屏渲染
    • 在线/离线事件检测
    • 多线程
    • REPL
    • 键盘快捷键
    • DevTools扩展
    • 使用原生模块
    • 使用 Pepper Flash 插件
    • 使用 Selenium 和 WebDriver
    • 使用 Widevine CDM 插件
    • 应用分发
    • 应用打包
    • 主进程调试
    • 使用 node-inspector 进行主进程调试
    • 使用 VSCode 进行主进程调试
    • Mac App Store应用提交指南
    • Windows App Store应用提交指南
    • 安全,本地功能和你的责任
    • Headless CI Systems 测试
  • API接口目录
    • API接口之公用接口
      • 应用语言
      • 开发概要
      • 专业术语
      • 常见问题
      • 环境变量
      • 快捷键字符串
      • 命令行
      • 客户端请求
      • 剪贴板
      • <File> H5 File文件操作
      • 无框窗口
      • <window.open> window.open打开新窗口或打开时传递消息
      • 沙盒选项
    • API接口之主进程接口
      • 整体控制
      • 全局快捷键
      • 图标创建与应用
      • 屏幕
      • 窗口
      • 菜单
      • 菜单项
      • 系统托盘
      • 网页内容
      • 从主进程到渲染进程的异步通信
      • 对话框
      • 创建和控制视图
      • 会话
      • 会话,缓存和代理等控制
      • 页面请求
      • HTTP/HTTPS请求处理
      • 协议的注册和处理
      • 使用系统默认应用程序管理文件或URL
      • 下载项管理
      • 进程控制
      • Chromium原生网络库
      • 获取系统首选项
      • 电源状态
      • 节能管理
      • 调试工具
      • 奔溃报告
      • 性能数据收集
      • 自动更新
      • TouchBar触摸条
      • TouchBar触摸条按钮
      • TouchBar触摸条拾色器
      • TouchBar触摸条分组
      • TouchBar触摸条scrubber
      • TouchBar触摸条分段控件
      • TouchBar触摸条label标签
      • TouchBar触摸条弹出框
      • TouchBar触摸条滑块
      • TouchBar触摸条间隔符
    • API接口之渲染进程接口
      • 页面渲染
      • <webview> webview标签
      • 渲染进程与主进程通信
      • 从渲染进程到主进程的异步通信
      • 子窗口
      • 捕获桌面资源
  • 结构列表
    • 蓝牙设备对象
    • 证书对象
    • 证书主体对象
    • Cookie对象
    • 崩溃报告对象
    • 桌面捕获源对象
    • 显示器对象
    • 打印机信息对象
    • 文件过滤器对象
    • 最近使用的项目
    • 常用列表项
    • CPU使用率对象即程序占用的CPU资源
    • IO值对象
    • 内存信息对象
    • 进程内存信息对象
    • 内存使用详细信息
    • Mime类型缓冲区
    • 矩形对象
    • 删除客户端证书对象
    • 删除密码对象
    • Scrubber项对象
    • 分段控制对象
    • 快捷方式对象
    • 任务对象
    • 缩略图工具栏按钮对象
    • 上传blob对象
    • 上传数据对象
    • 上传文件系统对象
    • 上传文件对象
    • 上传原始数据对象
Powered by GitBook
On this page
  • 方法
  • session.fromPartition(partition[, options])
  • 属性
  • session.defaultSession
  • 事件
  • 实例方法
  • 实例属性

Was this helpful?

  1. API接口目录
  2. API接口之主进程接口

会话,缓存和代理等控制

Previous会话Next页面请求

Last updated 4 years ago

Was this helpful?

管理浏览器 session ,Cookie,缓存,代理设置等。

进程:

session模块可以用来创建新的 Session对象,你也可以通过使用 的 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])

用途:获取来自 partition字符串的 Session实例( Session)

  • partition String

  • options Object

    • cache Boolean - 是否启用缓存

如果存在一个具有相同 partition的 Session时,它将被返回;否则将使用 options创建一个新的 Session实例。

如果 partition以 persist:前缀,该页面将使用一个持久会话,该会话可用于应用程序中具有相同 partition的所有页面。

如果 partition没有 persist:前缀,该页面将使用内存中会话。

如果 partition为空,那么将返回应用程序的默认会话。

要用 options创建一个 Session, 您必须确保带有 partition的 Session从来没有被使用过. 因为没有办法改变现有 Session 对象中的 options。

属性

session.defaultSession

属性:返回应用程序的默认 Session对象

事件

事件: 'will-download'

触发:Electron 将要从 webContents 下载 item 时

  • event Event

调用 event.preventDefault() 可以取消下载, item将不能从进程的下一刻开始。

const {session} = require('electron')
session.defaultSession.on('will-download', (event, item, webContents) => {
  event.preventDefault()
  require('request')(item.getURL(), (data) => {
    require('fs').writeFileSync('/somewhere', data)
  })
})

实例方法

ses.getCacheSize(callback)

用途:获取当前缓存大小并调用 callback

  • callback Function

    • size Integer - 缓存大小(字节)

ses.clearCache(callback)

用途:清除会话的HTTP缓存并调用 callback

  • callback Function

ses.clearStorageData([options, callback])

用途:清除Web存储的数据

  • options Object (可选)

    • origin String - 应该遵循 window.location.origin的格式 scheme://host:port。

    • storages String[] - 要清除的存储类型, 可以包含 : appcache, cookies, filesystem, indexdb, localstorage,shadercache, websql, serviceworkers

    • quotas String[] - 要清除的配额类型, 可以包含: temporary, persistent, syncable.

  • callback Function (可选) - 操作完成时调用.

ses.flushStorageData()

用途:将没有写入的DOMStorage数据写入磁盘

ses.setProxy(config, callback)

用途:设置代理并调用 callback

  • config Object

    • pacScript String - 与 PAC 文件相关的 URL.

    • proxyRules String - 要使用的代理规则.

    • proxyBypassRules String - 应绕过代理设置的网址规则。

  • callback Function - 操作完成时调用.

当 pacScript 和 proxyRules 一起提供时,将忽略 proxyRules,并应用 pacScript 配置 .

proxyRules 需要遵循下面的规则:

proxyRules = schemeProxies[`;`<schemeProxies>]
schemeProxies = [<urlScheme>`=`]<proxyURIList>
urlScheme = `http` | `https` | `ftp` | `socks`
proxyURIList = <proxyURL>[`,`<proxyURIList>]
proxyURL = [<proxyScheme>`://`]<proxyHost>[`:`<proxyPort>]

例子:

  • 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 ]

  • 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)

用途:解析 url 的代理信息并调用 callback

  • url URL

  • callback Function

    • proxy Object

ses.setDownloadPath(path)

用途:设置下载目录

  • path String - 下载地址

下载目录默认是应用所在目录里的 Downloads文件夹.

ses.enableNetworkEmulation(options)

用途:通过 session的给定配置模拟网络

  • options Object

    • offline Boolean - 是否模拟网络中断。默认为 false

    • latency Double (可选) -每毫秒的 RTT。默认为0,禁用延迟调节。

    • downloadThroughput Double (可选) -下载速率(以Bps为单位)。默认值为0,禁用下载限制。

    • uploadThroughput Double (可选) - 上传速率(以Bps为单位)。默认值为0,禁用上传限制。

//模拟具有50kbps吞吐量和500 ms延迟的GPRS连接
window.webContents.session.enableNetworkEmulation({
  latency: 500,
  downloadThroughput: 6400,
  uploadThroughput: 6400
})

//模拟网络中断
window.webContents.session.enableNetworkEmulation({offline: true})

ses.disableNetworkEmulation()

用途:重置为默认网络配置并停止所有已经使用 session 的活跃模拟网络

ses.setCertificateVerifyProc(proc)

用途:每当请求服务器证书验证时为session验证证书并调用 callback接收结果

  • proc Function

    • request Object

      • hostname String

      • error String - 验证结果.

    • callback Function

        • 0 - 表示成功并禁用证书Transperancy验证

        • -2 - 表示失败

        • -3 - 使用chrome的验证结果。

          ,

    callback(0) 来接收证书 , callback(-2) 来拒绝验证证书., setCertificateVerifyProc(null) ,则恢复为默认证书验证过程。

const {BrowserWindow} = require('electron')
let win = new BrowserWindow()

win.webContents.session.setCertificateVerifyProc((request, callback) => {
  const {hostname} = request
  if (hostname === 'github.com') {
    callback(0)
  } else {
    callback(-2)
  }
})

ses.setPermissionRequestHandler(handler)

用途:设置可以用于响应 session权限请求的处理程序并通过 callback(true) 允许或 callback(false) 拒绝该权限

  • handler Function

    • permission String -枚举了 'media', 'geolocation', 'notifications', 'midiSysex', 'pointerLock', 'fullscreen', 'openExternal'.

    • callback Function

      • permissionGranted Boolean -允许或拒绝该权限

const {session} = require('electron')
session.fromPartition('some-partition').setPermissionRequestHandler((webContents, permission, callback) => {
  if (webContents.getURL() === 'some-host' && permission === 'notifications') {
    return callback(false) // 被拒绝.
  }

  callback(true)
})

ses.clearHostResolverCache([callback])

用途:清除主机解析器缓存

  • callback Function (可选) - 操作完成时调用.

ses.allowNTLMCredentialsForDomains(domains)

用途:动态设置是否始终发送HTTP NTLM或协商身份验证的凭据

  • domains String - 启用集成身份验证的服务器的逗号分隔列表。

const {session} = require('electron')
// 以 `example.com`,`foobar.com`,`baz`等结尾用于集成身份验证的网址
session.defaultSession.allowNTLMCredentialsForDomains('*example.com, *foobar.com, *baz')

//用于集成身份验证的所有网址
session.defaultSession.allowNTLMCredentialsForDomains('*')

ses.setUserAgent(userAgent[, acceptLanguages])

用途:覆盖此会话的 userAgent和 acceptLanguages

  • userAgent String

  • acceptLanguages String (可选) 以逗号分隔的语言列表,例如 en-US,fr,de,ko,zh-CN,ja。

该方法不会影响现有 WebContents,每个 WebContents可以使用 webContents.setUserAgent来覆盖会话范围的 userAgent。

ses.getUserAgent()

用途:获取此会话的 userAgent( String)

ses.getBlobData(identifier, callback)

用途:获取与 identifier相关联的 blob数据( Blob)

  • identifier String - Valid UUID.

  • callback Function

    • result Buffer - Blob data.

ses.createInterruptedDownload(options)

用途:允许从以前的 Session 恢复 已取消或 已中断的下载

  • options Object

    • path String - 下载的绝对路径

    • urlChain String[] - 完整的下载链接

    • mimeType String (可选)

    • offset Integer - 下载的开始范围

    • length Integer - 下载大小

    • lastModified String - Last-Modified标头值

    • eTag String - ETag头值。

    • startTime Double (可选) - 秒级的下载时间

ses.clearAuthCache(options[, callback])

用途:清除会话的HTTP身份验证缓存

  • callback Function (可选) - 操作完成时调用

实例属性

ses.cookies

属性:此会话的Cookie对象

ses.webRequest

属性:此会话的WebRequest对象

ses.protocol

const {app, session} = require('electron')
const path = require('path')

app.on('ready', function () {
  const protocol = session.fromPartition('some-partition').protocol
  protocol.registerFileProtocol('atom', function (request, callback) {
    var url = request.url.substr(7)
    callback({path: path.normalize(`${__dirname}/${url}`)})
  }, function (error) {
    if (error) console.error('无法注册协议')
  })
})

item

webContents

匹配特定域后缀。如:".google.com", ".com", ""

[ SCHEME "://" ] IP_LITERAL [ ":" PORT ] 匹配作为IP地址文字的网址。如:"127.0.1", "[0:0::1]", "[::1]", ""

certificate

verificationResult Integer - .以下为常见错误代码:

webContents - 请求权限.

API将生成可以用进行访问的事件。该事件没有任何可关联的 WebContents且它的初始状态将被 中断。

只有当在上调用 resume API时,下载将开始。

options ( | )

属性:此会话的Protocol对象(模块的实例)

DownloadItem
WebContents
http://.google.com
http://[::1]:99
Certificate
证书错误码
WebContents
WebContents
will-download
DownloadItem
DownloadItem
RemovePassword
RemoveClientCertificate
protocol
webContents
主进程