一、简述https与http
1、基本概念
http: 超文本传输协议,是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
https: 是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
2、区别
http 超文本传输协议,明文传输,https是具有安全性的ssl加密传输协议。
使用不同的连接方式,端口也不同,一般而言,http的端口是80,https的端口是443。http的连接很简单,是无状态的,https是ssl+http构建的可进行加密传输、身份认证的网络协议,比http协议安全。
3、https协议的工作原理
客户端在使用HTTPS方式与Web服务器通信时有以下几个步骤。
web服务器接收到客户端的请求之后,会将网站的证书(证书中包含了公钥),返回或者说传输给客户端。
客户端和web服务器端开始协商SSL链接的安全等级,也就是加密等级。
客户端浏览器通过双方协商一致的安全等级,建立会话密钥,然后通过网站的公钥来加密会话密钥,并传送给网站。
web服务器通过自己的私钥解密出会话密钥。
web服务器通过会话密钥加密与客户端之间的通信。
二、let const var的区别
1、var是es5提出的,let和const是es6提出的
2、var声明的变量存在变量提升(将变量提升到当前作用域的顶部),可在声明前调用,值为undefined。let和const不存在变量提升,他们声明的变量一定要在声明之后使用,否则会报错。
3、var允许重复声明变量,let和const不允许在同一作用域重复声明。
4、let和const存在暂时性死区。在代码块内, 使用let声明变量前,该变量都是不可用的,这在语法上,称为‘暂时性死区’。
5、var不存在块级作用域,let和const存在块级作用域。
6、var和let可以修改声明的变量,const声明一个只读的常量,一旦声明,常量的值就不能改变。
三、跨域解决办法
1、由于浏览器的同源策略限制,所以会出现跨域的问题。其中同源是指协议(protocol)、域名(hostname)、端口(port)均相同。
同源策略作为浏览器的一项安全策略,是指从一个源中加载的文档或脚本与来自不同源的资源之间的交互会被浏览器所限制。
2、常用解决方法:
jsonp:浏览器对script,img这些标签没有限制,可以通过script,请求一个带参网址实现跨域通信。
cors:跨域资源共享。普通跨域请求,只服务端设置Access-Control-Allow-Origin即可,前端无需设置,如果是要带cookie请求,则前后端都需要设置。
四、怎么禁止js访问cookie信息
在cookie中设置httponly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止xxs攻击。