electron通过钩子函数,原本是直接加载index.html静态资源,但是在开发模式下,非常不便,每次都要重启electron.
fs的nodejs模块,实际上是基于ftp协议加载文件, 如果是通过http协议加载, 那么连接便是https://localhost:443
,而我通过nodejs开一个小型服务器.并且,这样就能通过http网络协议连接electron端与react+webpack端沟通了.既然如此,何不利用nodejs - http2协议的服务端主动push功能,来热更新index.html静态资源呢,这非常强大呢.
http2底层实现原理是非常复杂的,了解即可,如果要自己实现,麻烦不说,性能不见得会好.
const http2 = require('http2');
const fs = require('fs');
const port = 443;
const srv = http2.createSecureServer({
key: fs.readFileSync('./localhost-privkey.pem'),
cert: fs.readFileSync('./localhost-cert.pem')
});
srv.on('stream', (stream, headers) => {
// stream is a Duplex
stream.respond({
'content-type': 'text/html',
':status': 200
});
stream.end('<h1>Hello dghjWorld</h1>');
});
srv.listen(port,p => {
console.log(`success load ${port}`);
});
通过nodemon server.js
即可运行这个文件
openssl req -x509 -newkey rsa:2048 -nodes -sha256 -subj '/CN=localhost' \
-keyout localhost-privkey.pem -out localhost-cert.pem
协议自然是SHA256了, 为啥是SHA256呢,因为我在利用 openssl
生成证书的时候,写了要用sha256加密.
SSL 证书中包含的具体内容有:
(1)证书的发布机构CA
(2)证书的有效期
(3)公钥
(4)证书所有者
(5)签名
对称加密 有流式、分组两种,加密和解密都是使用的同一个密钥。 例如:DES、AES-GCM、ChaCha20-Poly1305等
非对称加密 加密使用的密钥和解密使用的密钥是不相同的,分别称为:公钥、私钥,公钥和算法都是公开的,私钥是保密的。非对称加密算法性能较低,但是安全性超强,由于其加密特性,非对称加密算法能加密的数据长度也是有限的。 例如:RSA、DSA、ECDSA、 DH、ECDHE
哈希算法 将任意长度的信息转换为较短的固定长度的值,通常其长度要比信息小得多,且算法不可逆。 例如:MD5、SHA-1、SHA-2、SHA-256 等
数字签名 签名就是在信息的后面再加上一段内容(信息经过hash后的值),可以证明信息没有被修改过。hash值一般都会加密后(也就是签名)再和信息一起发送,以保证这个hash值不被修改。
chrome canary
这个版本,打开72版本,科技感十足..HTTPS系列干货(一):HTTPS 原理详解 - 很好很强