资讯专栏INFORMATION COLUMN

【HTTP基础】HTTP2.0简介及web安全

superPershing / 1930人阅读

摘要:请求优先级把消息分解为很多独立的帧之后,就可以通过优化这些帧的交错和传输顺序,进一步提升性能,为了做到这一点,每个流都可以携带有的优先值。服务器可以根据流的优先级,控制资源的分配,而在响应数据准备好之后,优先将最高优先级的帧发送给浏览器。

HTTP2.0

HTTP2.0的目的就是通过支持请求与响应的多路复用来减少延迟、通过压缩HTTP首部字段将协议开销降至最低,同时增加对请求优先级和服务器端推送的支持,HTTP2.0不会改动HTTP的语义、HTTP方法、状态码、URI和首部字段等这些核心概念,但是HTTP2.0修改了数据传输的方式和数据格式化的方式。

二进制分帧层

在传输层和应用层之间新增了二进制分帧层,它位于应用层之内,处于应用层可见的高层HTTP API之下的一个新机制,HTTP的语义不受影响,只是在传输期间对数据的编码方式做出修改,HTTP1.x以换行符作为纯文本的分隔符,而HTTP2.0将所有传输的信息分割为更小的消息和帧,并对它们采用二进制格式的编码。

HTTP2.0中的新概念:

流,已建立连接上的双向字节流;

消息,与逻辑消息对应的完整的一系列数据帧,比如请求、响应等;

帧,HTTP2.0通信的最小单位,每个帧的首部含有流标识符。

所有的HTTP2.0的通信都是在一个TCP连接上完成,这个TCP连接可以承载任意数量的双向数据流,相应的,每个数据流以消息的形式发送,而消息由一个或多个帧组成,这些帧可以乱序发送,然后再根据每个帧首部的流标识符重新组装。由于所有的帧都采用二进制编码,所以首部字段都会被压缩。

在HTTP1.x中,如果客户端想发送多个并行的请求以改进性能,就必须使用多个TCP连接,HTTP2.0实现了多路复用,客户端和服务器可以把HTTP消息分解为互不依赖的帧,然后乱序发送,最后在另一端把它们重新组装起来。这样就可以只使用一个TCP连接即可并行发送多个请求和响应。

请求优先级

把HTTP消息分解为很多独立的帧之后,就可以通过优化这些帧的交错和传输顺序,进一步提升性能,为了做到这一点,每个流都可以携带有31bites的优先值。服务器可以根据流的优先级,控制资源的分配,而在响应数据准备好之后,优先将最高优先级的帧发送给浏览器。

服务器推送

在HTTP2.0,服务器可以额外的向浏览器推送资源,当浏览器请求资源A时,而服务器知道它很可能也需要资源B,服务器可以在浏览器发送请求前,主动将资源推送给客户端。这个功能可以帮助客户端将资源B放进缓存。

首部压缩

HTTP1.x的每一次通信都会携带一组首部,用于描述传输的资源及其属性,这通常会增加500-800字节的开销,为了减少这些开销提升性能:

HTTP2.0会使用首部表来跟踪和存储之前发送的键值对,对于相同的数据,不再通过每次请求和响应发送;

首部表在HTTP2.0连接持续期内始终存在,由服务器和浏览器渐进的更新;

每个新的首部字段要么被追加到当前首部表的末尾,要么替换首部表之前的值;

在上面的例子中,第二次发送请求只需要发送变化了的字段,从而显著的减少了每个请求的开销。

web安全

常见的前端安全问题包括以下几点:

XSS攻击

iframe带来的风险

CSRF攻击

网络劫持攻击

XSS攻击

XSS是跨站脚本攻击的简称,这类安全问题的本质原因在于:浏览器错误的将攻击者提供的用户输入数据当做JavaScript脚本给执行了。

1:用户输入框输入的数据不经过处理直接展示在页面上,该攻击手段最简单的防御方法就是将前端输入的数据都进行转义,比如将"<"、">"转义为"<",">"实体字符,这样输入数据里面的就不会被浏览器当做脚本执行了。但是在Jquery中,append()在添加元素的时候,会使用eval将参数里面的

阅读需要支付1元查看
<