HTTP场景实践|青训营

146 阅读5分钟

什么是HTTP

Http,中文意思是指超文本传输协议,指的是在网络,网络之间或者是计算机用户与计算机用户之间进行网络传输和文件传输的一种超文本传输协议,对计算机安全和网络安全起着至关重要的作用。

超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。

http是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。http也是应用层协议,是为了实现某一类具体应用的协议,并由某一运行在用户空间的应用程序来实现其功能。

HTTP简要通信过程:

建立连接——发送请求数据包——返回响应数据包——关闭连接

  1. 浏览器建立与web服务器之间的连接

  2. 浏览器将请求数据打包(生成请求数据包)并发送到web服务器

  3. web服务器将处理结果打包(生成响应数据包)并发送给浏览器

  4. web服务器关闭连接

Request请求数据包数据格式

1.请求行:请求类型/请求资源路径、协议的版本和类型

2.请求头:一些键值对,浏览器与web服务器之间都可以发送,特定的某种含义

3.空行:请求头与请求体之间用一个空行隔开

4.请求体:要发送的数据(一般post提交会使用)eg:user=123&pass=123

Response返回数据包数据格式

一个响应由四个部分组成:状态行、响应标头、空行、响应数据

#响应头标

像请求头标一样,它们指出服务器的功能,标识出响应数据的细节。

#空行

最后一个响应头标之后是一个空行,发送回车符和退行,表明服务器以下不再有头标。

场景实践

  • 任选一个浏览器,对于其涉及的请求中的缓存策略展开具体分析

以在美团的官方网站为例

i.meituan.com/mttouch/pag…

  1. 打开浏览器
  2. 输入i.meituan.com/mttouch/pag…
  3. 打开控制台【右键-检查或者直接按F12】
  4. 打开之后切换到Network

f049b2ddb897c35062a91a3ed39dcd21.png

General(公共头部)

a0bf0597c656a060a8cfb34ef5c3f03b.png

  • Request URL:请求的URL地址

  • Request Method : 页面请求的方式【此页面的请求方式为GET】

    -get请求--请求数据在url里面,在HTTP协议头中,以?的形式

    get会在地址栏里显示出来,而post不会改变地址栏

    -post请求--把数据存放在HTTP包的包题里面

  • Status Code :请求的返回状态

    200存在文件
    403存在文件夹
    3xx均可能存在
    404不存在文件及文件夹
    500均可能存在
  • Remote Address :请求的远程地址

  • Referrer Policy :请求头中Referrer的策略

Response Headers(响应头)

85f355baab62060ef0f1241bb050252f.png

  • Cache-Control:客户端希望服务端如何缓存自己的请求数据

【no-cache:不在服务器上缓存数据】

但是设置了no-cache之后并不代表浏览器不缓存,而是在缓存前要向服务器确认资源是否被更改。因此有的时候只设置no-cache防止缓存还是不够保险,还可以加上private指令,将过期时间设为过去的时间。

· no-store: 绝对禁止缓存。

  • Connection:服务器通过这个头,响应完是保持链接还是关闭链接

    【此网站为keep-alive】

  • Content-Encoding:服务端所响应数据的编码格式

    【此网站的编码形式为gzip】

  • Content-Language : 服务器的语言环境

    【此网站的语言环境为en-US】

  • Content-Type 返回数据的类型

    【该网站返回的数据类型为text/html】

  • Date :返回响应的时间

  • m-appkey:应用key

  • Server:响应发送的时候所用的web服务器软件名称和版本号,这个字段可以帮助客户端了解响应的发起者

  • Transfer-Encoding:服务器通过这个头,告诉浏览器数据的传送格式

acc01a10e239a4d2f21700e8099e7393.png

这是一段加密的内容,运用的加密方式是base64

解码得到:

{"MTRootMethod":"/mttouch/page/home","MTRootAppKey":"com.sankuai.nest.gateway"}

Request Headers(请求头)

d50f15da09a1d79bfbefe1798bebed1e.png

  • Accept :客户端支持的数据类型

  • Accept-Encoding:客户机支持的数据压缩格式

  • Accept-Language:客户机的语言环境

  • Cache-Control:客户端希望服务端如何缓存自己的请求数据

  • Connection:服务器通过这个头,响应完是保持链接还是关闭链接【此网站为keep-alive】

  • Cookie:为扩展字段,存储于客户端,向同一域名的服务端发送属于该域的cookie

    有时候也用复数形式Cookies,这种是指某些网站为了辨别用户身份,简单来说就是当您输入一次网站的用户名和密码之后,下一次就可以不需要输入。

    Cookie 是由 Web 服务器保存在用户浏览器上的小文本文件,它包含有关用户的信息。

  • Host:想访问的主机名