| 
									
										
										
										
											2013-09-09 15:35:57 +08:00
										 |  |  | # protocol
 | 
					
						
							| 
									
										
										
										
											2013-09-03 18:22:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-22 11:42:54 -07:00
										 |  |  | > Register a custom protocol and intercept existing protocol requests.
 | 
					
						
							| 
									
										
										
										
											2013-09-03 18:22:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-23 11:20:56 -08:00
										 |  |  | Process: [Main](../glossary.md#main-process) | 
					
						
							| 
									
										
										
										
											2016-11-03 10:26:00 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | An example of implementing a protocol that has the same effect as the | 
					
						
							| 
									
										
										
										
											2013-09-03 18:22:40 +08:00
										 |  |  | `file://` protocol: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```javascript | 
					
						
							| 
									
										
										
										
											2016-07-25 18:39:25 -07:00
										 |  |  | const {app, protocol} = require('electron') | 
					
						
							|  |  |  | const path = require('path') | 
					
						
							| 
									
										
										
										
											2016-05-09 10:20:08 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-11 02:15:09 +09:00
										 |  |  | app.on('ready', () => { | 
					
						
							|  |  |  |   protocol.registerFileProtocol('atom', (request, callback) => { | 
					
						
							| 
									
										
										
										
											2016-07-25 18:39:25 -07:00
										 |  |  |     const url = request.url.substr(7) | 
					
						
							|  |  |  |     callback({path: path.normalize(`${__dirname}/${url}`)}) | 
					
						
							| 
									
										
										
										
											2016-05-11 02:15:09 +09:00
										 |  |  |   }, (error) => { | 
					
						
							| 
									
										
										
										
											2016-07-25 18:39:25 -07:00
										 |  |  |     if (error) console.error('Failed to register protocol') | 
					
						
							|  |  |  |   }) | 
					
						
							|  |  |  | }) | 
					
						
							| 
									
										
										
										
											2013-09-03 18:22:40 +08:00
										 |  |  | ``` | 
					
						
							| 
									
										
										
										
											2016-07-25 18:39:25 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-09 10:20:08 +09:00
										 |  |  | **Note:** All methods unless specified can only be used after the `ready` event | 
					
						
							|  |  |  | of the `app` module gets emitted. | 
					
						
							| 
									
										
										
										
											2013-09-20 18:36:16 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | ## Methods
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The `protocol` module has the following methods: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-20 09:43:12 -08:00
										 |  |  | ### `protocol.registerStandardSchemes(schemes[, options])`
 | 
					
						
							| 
									
										
										
										
											2015-08-14 13:44:18 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-28 18:28:44 +13:00
										 |  |  | * `schemes` String[] - Custom schemes to be registered as standard schemes. | 
					
						
							| 
									
										
										
										
											2016-12-20 09:43:12 -08:00
										 |  |  | * `options` Object (optional) | 
					
						
							|  |  |  |   * `secure` Boolean (optional) - `true` to register the scheme as secure. | 
					
						
							|  |  |  |     Default `false`. | 
					
						
							| 
									
										
										
										
											2015-08-14 13:44:18 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-09 10:20:08 +09:00
										 |  |  | A standard scheme adheres to what RFC 3986 calls [generic URI | 
					
						
							|  |  |  | syntax](https://tools.ietf.org/html/rfc3986#section-3). For example `http` and | 
					
						
							|  |  |  | `https` are standard schemes, while `file` is not. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Registering a scheme as standard, will allow relative and absolute resources to | 
					
						
							|  |  |  | be resolved correctly when served. Otherwise the scheme will behave like the | 
					
						
							|  |  |  | `file` protocol, but without the ability to resolve relative URLs. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | For example when you load following page with custom protocol without | 
					
						
							|  |  |  | registering it as standard scheme, the image will not be loaded because | 
					
						
							|  |  |  | non-standard schemes can not recognize relative URLs: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```html | 
					
						
							|  |  |  | <body> | 
					
						
							|  |  |  |   <img src='test.png'> | 
					
						
							|  |  |  | </body> | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2016-08-24 09:03:44 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | Registering a scheme as standard will allow access to files through the | 
					
						
							|  |  |  | [FileSystem API][file-system-api]. Otherwise the renderer will throw a security | 
					
						
							| 
									
										
										
										
											2016-09-22 00:20:34 +05:30
										 |  |  | error for the scheme. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | By default web storage apis (localStorage, sessionStorage, webSQL, indexedDB, cookies) | 
					
						
							|  |  |  | are disabled for non standard schemes. So in general if you want to register a | 
					
						
							|  |  |  | custom protocol to replace the `http` protocol, you have to register it as a standard scheme: | 
					
						
							| 
									
										
										
										
											2016-05-09 10:20:08 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  | ```javascript | 
					
						
							| 
									
										
										
										
											2016-07-25 18:39:25 -07:00
										 |  |  | const {app, protocol} = require('electron') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protocol.registerStandardSchemes(['atom']) | 
					
						
							| 
									
										
										
										
											2016-05-11 02:15:09 +09:00
										 |  |  | app.on('ready', () => { | 
					
						
							| 
									
										
										
										
											2016-07-25 18:39:25 -07:00
										 |  |  |   protocol.registerHttpProtocol('atom', '...') | 
					
						
							|  |  |  | }) | 
					
						
							| 
									
										
										
										
											2016-05-09 10:20:08 +09:00
										 |  |  | ``` | 
					
						
							| 
									
										
										
										
											2016-05-08 01:31:04 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-09 10:20:08 +09:00
										 |  |  | **Note:** This method can only be used before the `ready` event of the `app` | 
					
						
							|  |  |  | module gets emitted. | 
					
						
							| 
									
										
										
										
											2015-08-14 13:44:18 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-09 00:51:46 +05:30
										 |  |  | ### `protocol.registerServiceWorkerSchemes(schemes)`
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-28 18:28:44 +13:00
										 |  |  | * `schemes` String[] - Custom schemes to be registered to handle service workers. | 
					
						
							| 
									
										
										
										
											2015-12-09 00:51:46 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | ### `protocol.registerFileProtocol(scheme, handler[, completion])`
 | 
					
						
							| 
									
										
										
										
											2013-09-03 18:22:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | * `scheme` String | 
					
						
							|  |  |  | * `handler` Function | 
					
						
							| 
									
										
										
										
											2016-10-13 17:30:57 +11:00
										 |  |  |   * `request` Object | 
					
						
							|  |  |  |     * `url` String | 
					
						
							|  |  |  |     * `referrer` String | 
					
						
							|  |  |  |     * `method` String | 
					
						
							|  |  |  |     * `uploadData` [UploadData[]](structures/upload-data.md) | 
					
						
							|  |  |  |   * `callback` Function | 
					
						
							|  |  |  |     * `filePath` String (optional) | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | * `completion` Function (optional) | 
					
						
							| 
									
										
										
										
											2016-10-13 17:30:57 +11:00
										 |  |  |   * `error` Error | 
					
						
							| 
									
										
										
										
											2015-08-14 13:44:18 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-01 19:08:31 -07:00
										 |  |  | Registers a protocol of `scheme` that will send the file as a response. The | 
					
						
							|  |  |  | `handler` will be called with `handler(request, callback)` when a `request` is | 
					
						
							|  |  |  | going to be created with `scheme`. `completion` will be called with | 
					
						
							|  |  |  | `completion(null)` when `scheme` is successfully registered or | 
					
						
							|  |  |  | `completion(error)` when failed. | 
					
						
							| 
									
										
										
										
											2013-09-03 18:22:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | To handle the `request`, the `callback` should be called with either the file's | 
					
						
							|  |  |  | path or an object that has a `path` property, e.g. `callback(filePath)` or | 
					
						
							| 
									
										
										
										
											2015-08-14 13:44:18 +08:00
										 |  |  | `callback({path: filePath})`. | 
					
						
							| 
									
										
										
										
											2013-09-03 18:22:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | When `callback` is called with nothing, a number, or an object that has an | 
					
						
							|  |  |  | `error` property, the `request` will fail with the `error` number you | 
					
						
							| 
									
										
										
										
											2015-09-01 19:08:31 -07:00
										 |  |  | specified. For the available error numbers you can use, please see the | 
					
						
							| 
									
										
										
										
											2016-01-28 18:59:07 +08:00
										 |  |  | [net error list][net-error]. | 
					
						
							| 
									
										
										
										
											2013-09-03 18:22:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | By default the `scheme` is treated like `http:`, which is parsed differently | 
					
						
							| 
									
										
										
										
											2015-09-01 19:08:31 -07:00
										 |  |  | than protocols that follow the "generic URI syntax" like `file:`, so you | 
					
						
							|  |  |  | probably want to call `protocol.registerStandardSchemes` to have your scheme | 
					
						
							|  |  |  | treated as a standard scheme. | 
					
						
							| 
									
										
										
										
											2015-07-16 06:32:09 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | ### `protocol.registerBufferProtocol(scheme, handler[, completion])`
 | 
					
						
							| 
									
										
										
										
											2013-09-03 18:22:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | * `scheme` String | 
					
						
							| 
									
										
										
										
											2015-08-14 13:44:18 +08:00
										 |  |  | * `handler` Function | 
					
						
							| 
									
										
										
										
											2016-10-13 17:30:57 +11:00
										 |  |  |   * `request` Object | 
					
						
							|  |  |  |     * `url` String | 
					
						
							|  |  |  |     * `referrer` String | 
					
						
							|  |  |  |     * `method` String | 
					
						
							|  |  |  |     * `uploadData` [UploadData[]](structures/upload-data.md) | 
					
						
							|  |  |  |   * `callback` Function | 
					
						
							| 
									
										
										
										
											2016-11-25 23:17:31 +11:00
										 |  |  |     * `buffer` (Buffer | [MimeTypedBuffer](structures/mime-typed-buffer.md)) (optional) | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | * `completion` Function (optional) | 
					
						
							| 
									
										
										
										
											2016-10-13 17:30:57 +11:00
										 |  |  |   * `error` Error | 
					
						
							| 
									
										
										
										
											2015-06-12 13:28:23 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-28 18:59:07 +08:00
										 |  |  | Registers a protocol of `scheme` that will send a `Buffer` as a response. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The usage is the same with `registerFileProtocol`, except that the `callback` | 
					
						
							|  |  |  | should be called with either a `Buffer` object or an object that has the `data`, | 
					
						
							|  |  |  | `mimeType`, and `charset` properties. | 
					
						
							| 
									
										
										
										
											2015-06-12 13:28:23 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-14 13:44:18 +08:00
										 |  |  | Example: | 
					
						
							| 
									
										
										
										
											2015-07-16 06:32:09 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-14 13:44:18 +08:00
										 |  |  | ```javascript | 
					
						
							| 
									
										
										
										
											2016-07-25 18:39:25 -07:00
										 |  |  | const {protocol} = require('electron') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-04 11:59:02 -06:00
										 |  |  | protocol.registerBufferProtocol('atom', (request, callback) => { | 
					
						
							| 
									
										
										
										
											2017-06-10 12:22:27 -07:00
										 |  |  |   callback({mimeType: 'text/html', data: Buffer.from('<h5>Response</h5>')}) | 
					
						
							| 
									
										
										
										
											2016-05-04 11:59:02 -06:00
										 |  |  | }, (error) => { | 
					
						
							| 
									
										
										
										
											2016-07-25 18:39:25 -07:00
										 |  |  |   if (error) console.error('Failed to register protocol') | 
					
						
							|  |  |  | }) | 
					
						
							| 
									
										
										
										
											2015-08-14 13:44:18 +08:00
										 |  |  | ``` | 
					
						
							| 
									
										
										
										
											2015-06-12 13:28:23 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | ### `protocol.registerStringProtocol(scheme, handler[, completion])`
 | 
					
						
							| 
									
										
										
										
											2013-09-03 18:22:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | * `scheme` String | 
					
						
							| 
									
										
										
										
											2015-08-14 13:44:18 +08:00
										 |  |  | * `handler` Function | 
					
						
							| 
									
										
										
										
											2016-10-13 17:30:57 +11:00
										 |  |  |   * `request` Object | 
					
						
							|  |  |  |     * `url` String | 
					
						
							|  |  |  |     * `referrer` String | 
					
						
							|  |  |  |     * `method` String | 
					
						
							|  |  |  |     * `uploadData` [UploadData[]](structures/upload-data.md) | 
					
						
							|  |  |  |   * `callback` Function | 
					
						
							|  |  |  |     * `data` String (optional) | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | * `completion` Function (optional) | 
					
						
							| 
									
										
										
										
											2016-10-13 17:30:57 +11:00
										 |  |  |   * `error` Error | 
					
						
							| 
									
										
										
										
											2013-09-03 18:22:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-28 18:59:07 +08:00
										 |  |  | Registers a protocol of `scheme` that will send a `String` as a response. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The usage is the same with `registerFileProtocol`, except that the `callback` | 
					
						
							|  |  |  | should be called with either a `String` or an object that has the `data`, | 
					
						
							|  |  |  | `mimeType`, and `charset` properties. | 
					
						
							| 
									
										
										
										
											2013-09-03 18:22:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | ### `protocol.registerHttpProtocol(scheme, handler[, completion])`
 | 
					
						
							| 
									
										
										
										
											2013-09-03 18:22:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | * `scheme` String | 
					
						
							|  |  |  | * `handler` Function | 
					
						
							| 
									
										
										
										
											2016-10-13 17:30:57 +11:00
										 |  |  |   * `request` Object | 
					
						
							|  |  |  |     * `url` String | 
					
						
							|  |  |  |     * `referrer` String | 
					
						
							|  |  |  |     * `method` String | 
					
						
							|  |  |  |     * `uploadData` [UploadData[]](structures/upload-data.md) | 
					
						
							|  |  |  |   * `callback` Function | 
					
						
							|  |  |  |     * `redirectRequest` Object | 
					
						
							|  |  |  |       * `url` String | 
					
						
							|  |  |  |       * `method` String | 
					
						
							|  |  |  |       * `session` Object (optional) | 
					
						
							|  |  |  |       * `uploadData` Object (optional) | 
					
						
							|  |  |  |         * `contentType` String - MIME type of the content. | 
					
						
							|  |  |  |         * `data` String - Content to be sent. | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | * `completion` Function (optional) | 
					
						
							| 
									
										
										
										
											2016-10-13 17:30:57 +11:00
										 |  |  |   * `error` Error | 
					
						
							| 
									
										
										
										
											2015-08-14 13:44:18 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | Registers a protocol of `scheme` that will send an HTTP request as a response. | 
					
						
							| 
									
										
										
										
											2016-01-28 18:59:07 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | The usage is the same with `registerFileProtocol`, except that the `callback` | 
					
						
							|  |  |  | should be called with a `redirectRequest` object that has the `url`, `method`, | 
					
						
							| 
									
										
										
										
											2015-12-06 15:27:02 -05:00
										 |  |  | `referrer`, `uploadData` and `session` properties. | 
					
						
							| 
									
										
										
										
											2013-09-03 18:22:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | By default the HTTP request will reuse the current session. If you want the | 
					
						
							|  |  |  | request to have a different session you should set `session` to `null`. | 
					
						
							| 
									
										
										
										
											2013-09-03 18:22:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-28 18:59:07 +08:00
										 |  |  | For POST requests the `uploadData` object must be provided. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | ### `protocol.unregisterProtocol(scheme[, completion])`
 | 
					
						
							| 
									
										
										
										
											2013-09-03 18:22:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | * `scheme` String | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | * `completion` Function (optional) | 
					
						
							| 
									
										
										
										
											2016-10-13 17:30:57 +11:00
										 |  |  |   * `error` Error | 
					
						
							| 
									
										
										
										
											2013-09-03 18:22:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-14 13:44:18 +08:00
										 |  |  | Unregisters the custom protocol of `scheme`. | 
					
						
							| 
									
										
										
										
											2013-09-03 18:22:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | ### `protocol.isProtocolHandled(scheme, callback)`
 | 
					
						
							| 
									
										
										
										
											2013-09-03 18:22:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-14 13:44:18 +08:00
										 |  |  | * `scheme` String | 
					
						
							|  |  |  | * `callback` Function | 
					
						
							| 
									
										
										
										
											2016-10-13 17:30:57 +11:00
										 |  |  |   * `error` Error | 
					
						
							| 
									
										
										
										
											2013-09-03 18:22:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-14 13:44:18 +08:00
										 |  |  | The `callback` will be called with a boolean that indicates whether there is | 
					
						
							|  |  |  | already a handler for `scheme`. | 
					
						
							| 
									
										
										
										
											2013-09-03 18:22:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | ### `protocol.interceptFileProtocol(scheme, handler[, completion])`
 | 
					
						
							| 
									
										
										
										
											2013-09-03 18:22:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-14 13:44:18 +08:00
										 |  |  | * `scheme` String | 
					
						
							|  |  |  | * `handler` Function | 
					
						
							| 
									
										
										
										
											2016-10-13 17:30:57 +11:00
										 |  |  |   * `request` Object | 
					
						
							|  |  |  |     * `url` String | 
					
						
							|  |  |  |     * `referrer` String | 
					
						
							|  |  |  |     * `method` String | 
					
						
							|  |  |  |     * `uploadData` [UploadData[]](structures/upload-data.md) | 
					
						
							|  |  |  |   * `callback` Function | 
					
						
							|  |  |  |     * `filePath` String | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | * `completion` Function (optional) | 
					
						
							| 
									
										
										
										
											2016-10-13 17:30:57 +11:00
										 |  |  |   * `error` Error | 
					
						
							| 
									
										
										
										
											2013-09-03 18:22:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | Intercepts `scheme` protocol and uses `handler` as the protocol's new handler | 
					
						
							|  |  |  | which sends a file as a response. | 
					
						
							| 
									
										
										
										
											2015-03-16 18:23:45 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | ### `protocol.interceptStringProtocol(scheme, handler[, completion])`
 | 
					
						
							| 
									
										
										
										
											2015-03-16 18:23:45 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-14 13:44:18 +08:00
										 |  |  | * `scheme` String | 
					
						
							|  |  |  | * `handler` Function | 
					
						
							| 
									
										
										
										
											2016-10-13 17:30:57 +11:00
										 |  |  |   * `request` Object | 
					
						
							|  |  |  |     * `url` String | 
					
						
							|  |  |  |     * `referrer` String | 
					
						
							|  |  |  |     * `method` String | 
					
						
							|  |  |  |     * `uploadData` [UploadData[]](structures/upload-data.md) | 
					
						
							|  |  |  |   * `callback` Function | 
					
						
							|  |  |  |     * `data` String (optional) | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | * `completion` Function (optional) | 
					
						
							| 
									
										
										
										
											2016-10-13 17:30:57 +11:00
										 |  |  |   * `error` Error | 
					
						
							| 
									
										
										
										
											2015-08-14 13:44:18 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | Intercepts `scheme` protocol and uses `handler` as the protocol's new handler | 
					
						
							|  |  |  | which sends a `String` as a response. | 
					
						
							| 
									
										
										
										
											2015-03-16 18:23:45 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-08 11:14:04 +08:00
										 |  |  | ### `protocol.interceptBufferProtocol(scheme, handler[, completion])`
 | 
					
						
							| 
									
										
										
										
											2015-05-07 13:12:35 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-14 13:44:18 +08:00
										 |  |  | * `scheme` String | 
					
						
							|  |  |  | * `handler` Function | 
					
						
							| 
									
										
										
										
											2016-10-13 17:30:57 +11:00
										 |  |  |   * `request` Object | 
					
						
							|  |  |  |     * `url` String | 
					
						
							|  |  |  |     * `referrer` String | 
					
						
							|  |  |  |     * `method` String | 
					
						
							|  |  |  |     * `uploadData` [UploadData[]](structures/upload-data.md) | 
					
						
							|  |  |  |   * `callback` Function | 
					
						
							|  |  |  |     * `buffer` Buffer (optional) | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | * `completion` Function (optional) | 
					
						
							| 
									
										
										
										
											2016-10-13 17:30:57 +11:00
										 |  |  |   * `error` Error | 
					
						
							| 
									
										
										
										
											2015-06-17 11:32:39 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | Intercepts `scheme` protocol and uses `handler` as the protocol's new handler | 
					
						
							|  |  |  | which sends a `Buffer` as a response. | 
					
						
							| 
									
										
										
										
											2015-06-17 11:32:39 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-08 11:14:04 +08:00
										 |  |  | ### `protocol.interceptHttpProtocol(scheme, handler[, completion])`
 | 
					
						
							| 
									
										
										
										
											2015-06-17 11:32:39 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-14 13:44:18 +08:00
										 |  |  | * `scheme` String | 
					
						
							|  |  |  | * `handler` Function | 
					
						
							| 
									
										
										
										
											2016-10-13 17:30:57 +11:00
										 |  |  |   * `request` Object | 
					
						
							|  |  |  |     * `url` String | 
					
						
							|  |  |  |     * `referrer` String | 
					
						
							|  |  |  |     * `method` String | 
					
						
							|  |  |  |     * `uploadData` [UploadData[]](structures/upload-data.md) | 
					
						
							|  |  |  |   * `callback` Function | 
					
						
							|  |  |  |     * `redirectRequest` Object | 
					
						
							|  |  |  |       * `url` String | 
					
						
							|  |  |  |       * `method` String | 
					
						
							|  |  |  |       * `session` Object (optional) | 
					
						
							|  |  |  |       * `uploadData` Object (optional) | 
					
						
							|  |  |  |         * `contentType` String - MIME type of the content. | 
					
						
							|  |  |  |         * `data` String - Content to be sent. | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | * `completion` Function (optional) | 
					
						
							| 
									
										
										
										
											2016-10-13 17:30:57 +11:00
										 |  |  |   * `error` Error | 
					
						
							| 
									
										
										
										
											2015-05-07 13:12:35 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-28 22:03:39 -07:00
										 |  |  | Intercepts `scheme` protocol and uses `handler` as the protocol's new handler | 
					
						
							|  |  |  | which sends a new HTTP request as a response. | 
					
						
							| 
									
										
										
										
											2015-05-07 13:12:35 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-08 11:14:04 +08:00
										 |  |  | ### `protocol.uninterceptProtocol(scheme[, completion])`
 | 
					
						
							| 
									
										
										
										
											2015-05-07 13:12:35 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-14 13:44:18 +08:00
										 |  |  | * `scheme` String | 
					
						
							| 
									
										
										
										
											2016-10-13 17:30:57 +11:00
										 |  |  | * `completion` Function (optional) | 
					
						
							|  |  |  |   * `error` Error | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-14 13:44:18 +08:00
										 |  |  | Remove the interceptor installed for `scheme` and restore its original handler. | 
					
						
							| 
									
										
										
										
											2016-01-28 18:59:07 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | [net-error]: https://code.google.com/p/chromium/codesearch#chromium/src/net/base/net_error_list.h | 
					
						
							| 
									
										
										
										
											2016-08-24 09:03:44 -07:00
										 |  |  | [file-system-api]: https://developer.mozilla.org/en-US/docs/Web/API/LocalFileSystem |