HTTP 1.0、1.x、S 协议 及 请求头/体

影响一个 HTTP 网络请求的因素

  1. (带宽) 拨号上网
  2. (延迟) 浏览器阻塞、DNS 查询、建立连接(三次握手)

HTTP 1.0 和 1.1 区别

  1. 缓存处理:1.1 缓存控制策略 缓存头增加
  2. 带宽的优化以及网络连接的使用:1.0 需要一个包的一部分,但是会全部发去,而 2.0 需要哪一部分就传那一部分
  3. 错误通知管理:1.1 新增了 24 个错误状态响应码
  4. Host 头处理
  5. 1.1 支持了长连接

HTTP 1.x 和 2.0 区别

  1. 新的二进制格式:之前为文本编码,健壮性不好,现在改为了二进制
  2. 多路复用:2.0 同一个连接并发处理多个请求,并发处理量比 1.x 多很多
  3. Header 数据压缩:2.0 支持 HPACK 算法压缩,传输更快,header fields 差量更新(仅更新不同的部分,而原来一次全部更新)
  4. 服务端推送:一次推送 css 和 js

HTTP 和 HTTPS 区别

加密 SSL(加密)/TLS(解密) TCP

  1. HTTPS 需要 CA 请求证书(付费)
  2. HTTP 明文传送,而 HTTPS 加密传送
  3. 连接方式,端口完全不同 http(80) https(443)
  4. HTTPS 防止运营商劫持

Header

客户端请求:请求行、请求头、空行和请求数据

常用消息头:

  • Accept:text/html ——客户端能接收的资源类型
  • Accept-Encoding:gzip, deflate ——客户端能接收的压缩数据的类型
  • Accept-Language:en-US,en;q=0.8 ——客户端接收的语言类型
  • Accept-Charaset:ISO-8859-1(接受字符编码:iso-8859-1)
  • If-Modified-Since:Tue,11Jul 2019:20:20:20(告诉服务器,我的缓存中有这个文件,该文件的事件是。。。)
  • Referer:http://localhost:8080/test.html(告诉服务器来源,常用于防止下载、盗链)
  • Connection:close/Keep-Alive(保持链接,发送完数据不关闭链接)
  • Cache-Control:no-cache ——服务端禁止客户端缓存页面数据
  • Connection:keep-alive ——维护客户端和服务端的连接关系
  • Cookie: ——客户端暂存服务端的信息
  • Host:www.jnshu.com ——连接的目标主机和端口号
  • Pragma:no-cache ——服务端禁止客户端缓存页面数据
  • User-Agent: ——客户端版本号的名字
    HTTP 1.0、1.x、S 协议 及 请求头/体_第1张图片

服务器响应:状态行、消息报头、空行和响应正文

常用消息头

  • location:http://…
  • server:apache tomcat
  • Content-Encoding:gzip(告诉浏览器我使用了 gzip 压缩)
  • Content-Length:80(告诉浏览器送回数据字节大小)
  • Accept-Language:zh-cn(支持语言)
  • Content-Encoding:gzip ——压缩编码类型
  • Content-Type:text/html ——服务端发送的类型及采用的编码方式
  • Date:Thu, 13 Dec 2018 07:14:15 GMT ——客户端请求服务端的时间
  • Last-Modified:Fri, 10 Feb 2017 09:46:23 GMT ——服务端对该资源最后修改的时间,GMT是格林尼治标准时间
  • Server:nginx/1.2.4 ——服务端的Web服务端名
  • Transfer-Encoding:chunked ——分块传递数据到客户端

HTTP 1.0、1.x、S 协议 及 请求头/体_第2张图片

阻止 iframe 内嵌

现代浏览器遵循 X-Frame-Options 协议头,它表明一个资源是否允许加载到 frame 或者 iframe 中。如果响应包含值为 SAMEORIGIN 的协议头,浏览器会在 frame 中只加载同源请求的的资源。如果协议头设置为 DENY,浏览器会在加载 frame 时屏蔽所有资源,无论请求来自于哪个站点。
HTTP 1.0、1.x、S 协议 及 请求头/体_第3张图片

X-Requested-With:XMLHttpRequest

如果 requestedWith 为 null,则为同步请求
如果 requestedWith 为 XMLHttpRequest 则为 Ajax 请求

你可能感兴趣的:(网络)