非常教程

Electron参考手册

网页要求 | WebRequest

网页要求 | WebRequest

在生命周期的不同阶段拦截并修改请求的内容。

过程:Main

WebRequest类的实例通过使用SessionwebRequest属性来访问。

接受一个可选的filter和一个listenerWebRequest方法。在listener将被用listener(details)在 API 的事件已经发生。details对象描述了请求。作为listener传递的null将从事件取消。

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({cancel: false, requestHeaders: details.requestHeaders})
})

实例方法

以下方法适用于以下WebRequest情况:

webRequest.onBeforeRequest([filter, ]listener)

  • filter 目的
    • urls String [] - 将用于过滤出与 URL 模式不匹配的请求的 URL 模式数组。
  • listener 功能
    • details 目的
      • id 整数
      • url
      • method
      • resourceType
      • timestamp
      • uploadData 上传数据 []
-  `callback` Function 
    -  `response` Object 
        -  `cancel` Boolean (optional)
        -  `redirectURL` String (optional) - The original request is prevented from being sent or completed and is instead redirected to the given URL.

当一个请求即将发生,listener将被称为listener(details, callback)

uploadData是一个UploadData对象的数组。

callback有与被调用response的对象。

webRequest.onBeforeSendHeaders([filter, ]listener)

  • filter 目的
    • urls 串 [] - 将用于过滤出与 URL 模式不匹配的请求的 URL 模式数组。
  • listener 功能

listener将被用listener(details, callback)发送 HTTP 请求之前,一旦请求头可用。这可能发生在与服务器建立 TCP 连接之后,但在发送任何 http 数据之前。

  • details 目的
    • id 整数
    • url
    • method
    • resourceType
    • timestamp
    • requestHeaders 目的
  • callback 功能
    • response 目的
      • cancel 布尔(可选)
      • requestHeaders 对象(可选) - 提供时,将使用这些标题进行请求。

callback有与被调用response的对象。

webRequest.onSendHeaders([filter, ]listener)

  • filter 目的
    • urls String [] - 将用于过滤出与 URL 模式不匹配的请求的 URL 模式数组。
  • listener 功能
    • details 目的
      • id 整数
      • url
      • method
      • resourceType
      • timestamp
      • requestHeaders 目的

请求将在请求发送到服务器之前listener被调用,listener(details)onBeforeSendHeaders此侦听器被触发时,前一个响应的修改是可见的。

webRequest.onHeadersReceived([filter, ]listener)

  • filter 目的
    • urls String [] - 将用于过滤出与 URL 模式不匹配的请求的 URL 模式数组。
  • listener 功能

当收到请求的 HTTP 响应头时,listener将会使用该参数进行调用listener(details, callback)

  • details 目的
    • id
    • url
    • method
    • resourceType
    • timestamp
    • statusLine
    • statusCode 整数
    • responseHeaders 目的
  • callback 功能
    • response 目的
      • cancel 布尔
      • responseHeaders 对象(可选) - 提供时,假定服务器已使用这些标头进行响应。
      • statusLine字符串(可选) - 应在覆盖时提供,responseHeaders以更改标题状态,否则将使用原始响应标题的状态。

callback有与被调用response的对象。

webRequest.onResponseStarted([filter, ]listener)

  • filter 目的
    • urls String [] - 将用于过滤出与URL模式不匹配的请求的URL模式数组。
  • listener 功能
    • details 目的
      • id 整数
      • url
      • method
      • resourceType
      • timestamp
      • responseHeaders 目的
      • fromCache 布尔值 - 指示是否从磁盘缓存中获取响应。
      • statusCode 整数
      • statusLine

当收到响应主体的第一个字节时,listener将会调用listener(details)该参数。对于 HTTP 请求,这意味着状态行和响应标头可用。

webRequest.onBeforeRedirect([filter, ]listener)

  • filter 目的
    • urls String [] - 将用于过滤出与URL模式不匹配的请求的URL模式数组。
  • listener 功能
    • details 目的
      • id
      • url
      • method
      • resourceType
      • timestamp
      • redirectURL
      • statusCode 整数
      • ip 字符串(可选) - 请求实际发送到的服务器IP地址。
      • fromCache 布尔
      • responseHeaders 目的

listener将被用listener(details)在服务器启动的重定向即将发生。

webRequest.onCompleted([filter, ]listener)

  • filter 目的
    • urls String [] - 将用于过滤出与URL模式不匹配的请求的URL模式数组。
  • listener 功能
    • details 目的
      • id 整数
      • url
      • method
      • resourceType
      • timestamp
      • responseHeaders 目的
      • fromCache 布尔
      • statusCode 整数
      • statusLine

listener将被用listener(details)在一个请求完成。

webRequest.onErrorOccurred([filter, ]listener)

  • filter 目的
    • urls String [] - 将用于过滤出与URL模式不匹配的请求的URL模式数组。
  • listener 功能
    • details 目的
      • id 整数
      • url
      • method
      • resourceType
      • timestamp
      • fromCache 布尔
      • error 字符串 - 错误描述。

listener将被用listener(details)时发生错误。

网页要求 | WebRequest相关

Electron

Electron 是一个使用 JavaScript, HTML 和 CSS 等 Web 技术创建原生程序的框架,它负责比较难搞的部分,你只需把精力放在你的应用的核心上即可。

主页 https://electron.atom.io/
源码 https://github.com/electron/electron
发布版本 1.7.9

Electron目录

1.指南 | Guides
2.指南·开发 | Guides: Development
3.Webview 组件 |
4.加速器 | Accelerator
5.API
6.API·对象 | API·Objects
7.app
8.autoUpdater
9.浏览器总览 | BrowserView
10.浏览器窗口 | BrowserWindow
11.浏览器窗口代理 | BrowserWindowProxy)
12.ClientRequest
13.剪贴板 | clipboard
14.内容追踪 | contentTracing
15.小型文字档案 | Cookies
16.crashReporter
17.调试器 | Debugger
18.desktopCapturer
19.dialog
20.电子下载 | DownloadItem
21.环境变量 | Environment Variables
22.无框窗口 | Frameless Window
23.globalShortcut
24.IncomingMessage
25.ipcMain
26.IPC渲染器 | ipcRenderer
27.语言环境 | Locales
28.画面 | Menu
29.MenuItem
30.本地图像 | nativeImage
31.net
32.通知 | Notification
33.权限监控 | powerMonitor
34.权限存储拦截器 | powerSaveBlocker
35.处理 | process
36.协议 | protocol
37.远程 | remote
38.sandbox
39.屏幕 | screen
40.会话 | session
41.shell
42.系统表现 | systemPreferences
43.触摸板 | TouchBar
44.触摸板按钮 | TouchBarButton
45.触摸板颜色选择器 | TouchBarColorPicker
46.触摸板组 | TouchBarGroup
47.触摸板标签 | TouchBarLabel
48.触摸板弹出框 | TouchBarPopover
49.触摸板清理 | TouchBarScrubber
50.触摸板分段控制 | TouchBarSegmentedControl
51.触摸板滑块 | TouchBarSlider
52.触摸板间隔 | TouchBarSpacer
53.Tray
54.网页内容 | webContents
55.网页框架 | webFrame
56.网页要求 | WebRequest
57.窗口开启 | window.open