https原理,以及与http的区别
http是明文传输的,https在http协议上加了一层SSL/TLS数据加密协议实现了数据加密功能和验证网站服务器身份的功能。
数据加密使用的是混合加密形式,就是采用对称加密和非对称加密混合起来的方式。服务端会先申请数字证书,然后客户端请求数据的时候,服务端会先返回数字证书给客户端,客户端验证数字证书的合法性之后,拿到数字证书里面的公钥。然后利用伪随机数自己生成一个会话密钥,将会话密钥用公钥加密后传给服务端,服务端拿到加密的数据之后,用私钥解密拿到会话密钥,之后客户端与服务端之间的交流都通过会话密钥进行加密和解密。
js对象里面数据劫持的实现
Object.getOwnPropertyDescriptor(obj,property)
Object.getOwnPropertyDescriptors(obj)
Object.create(Object.getProtoTypeOf(obj),Object.getOwnPropertyDescriptors(obj))
Object.defineProperty()
Objetc.defineProperties()
{
value: 1,
writable: true,
enumerable: false,
configurable: false,
}
hash路由和history路由的区别
- 改变url路径中的hash值是不会让页面刷新的。
window.location.hash = 'edit'采用这种方式可以改变url中的hash值。当hash值改变的时候会触发hashchange事件,我们可以给window上面添加hashchange的监听回调函数,拿到事件对象判断当前的hash值来控制ui的显示和隐藏从而实现前端路由的效果。还可以通过a标签来改变hash值<a href="#edit">edit</a>。hash的兼容性比较好,但是搜索引擎对带有hash的页面不友好,带有hash的页面内难以追踪用户行为。 - history路由是html5新增的一个BOM对象。它有length和state两个属性,length保存的是用户历史有多少条记录,state的值pushstate传递的值。还有几个方法back,go,forward,pushstate,popstate。更多东西在收藏夹的那篇文章中提到了,到时候去看,懒得写了。。。。。