HTTP 基础知识

作者: A_si | 来源:发表于2020-09-13 10:16 被阅读0次

    周末闲着没事,就复习下 HTTP 基础知识。

    HTTP到底是什么?

    1. 浏览器输入url,打开一个网页。
    2. 开发者发送网络请求,返回数据。

    以上2点都是 HTTP 的应用,HTTP 的全称是 HyperText Transfer Protocol 超文本传输协议。我们要获取想要的数据,就需要定义一种协议,不然怎么知道拿到的或者发出的是对方需要的呢。

    HTTP 的工作方式是声明?

    sequenceDiagram
    浏览器->>服务器: 发送请求
    服务器-->>浏览器: 响应
    

    在浏览器输入一个地址,显示一个网页的过程,也就是浏览器发送请求到输入地址对应的服务器,服务器把对应页面数据返回给浏览器,浏览器渲染出来的。这个过程中,怎么把地址栏的url转化成请求的?请求和响应的数据格式是声明呢?

    转化

    https://api.github.com/users/octocat/orgs
    上面的url会被拆分为3部分:

    1. 协议类型 :HTTP
    2. 服务器地址:api.github.com
    3. 路径:/users/octocat/orgs

    然后组成请求报文,被浏览器通过 HTTP 发送。

    请求报文

    requese 报文结构:

    报文.jpg

    上面的URL转化后的样子如下:

    未命名绘图.jpg

    请求方法

    • GET
      获取资源,没有body。
    • POST
      增加或修改资源,有body。
    • PUT
      修改资源,有body。
    • DELETE
      删除资源,没有body。
    • HEAD
      类似于 GET ,响应报文没有body。比如下载文件,利用 HEAD 快速获取文件大小。

    PUT 和 POST 的区别在于,PUT 只修改数据,不增加。

    响应报文

    response 报文结构:

    响应.jpg
    截屏2020-09-12 上午11.00.45.png

    一些常见响应码:

    • 1xx:指示信息--表示请求已接收,继续处理。
    • 2xx:成功--表示请求已被成功接收、理解、接受。
    • 3xx:重定向--要完成请求必须进行更进一步的操作。
    • 4xx:客户端错误--请求有语法错误或请求无法实现。
    • 5xx:服务器端错误--服务器未能实现合法的请求。

    各类型常见状态代码、状态描述的说明如下:

    • 200 OK:客户端请求成功。
    • 301 资源永久重定向:请求服务器,返回301,响应头里带着 Location 指向新的地址。浏览器会帮我们向新的地址再发一次请求。
    • 400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
    • 401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
    • 403 Forbidden:服务器收到请求,但是拒绝提供服务。
    • 404 Not Found:请求资源不存在,举个例子:输入了错误的URL。

    Header

    Header 里是 HTTP 消息的元数据,常用的有下面几项:

    Host

    Host 的值是服务器主机地址,在请求发送前,通过 dns寻址,找到对应的主机。

    Content-Type/Content-Length

    Content-Length:内容的长度,字节为单位
    Content-Type:内容的类型,一般有以下几种:

    • text/html: html 文本,就是浏览器上的网页。
    • application/x-www-form-urlencoded:普通表单,拼接成 key=value格式,多组数据用&分割。
    • multipart/form-data:多部分形式,一般用于传输二进制内容,比如图片上传,一次可以提交多种信息。内容如果是多部分,用bodundart分割。
    • img/jpeg: 传输单张图片,与上面的区别是,上面可以传输单张或者多张,也可以是别的类型,比如一个文件。
    • applation/json: json 形式,用于 Web Api的响应或者 PUT/POST 请求,一般开发移动端,后台返回的数据格式就是 json。
    • application/zip:单文件,多用于 Web Api 的文件上传下载。

    Location

    在 服务器重定向的时候,会返回 Location ,它的值就是新的主机地址。

    User-Agent

    是一种向访问网站提供你所使用的浏览器类型、操作系统及版本、CPU 类型、浏览器渲染引擎、浏览器语言、浏览器插件等信息的标识,应用开发中,我们可以告诉浏览器我们是哪个版本的应用,方便前端做版本控制。

    Range/Accept-Range

    响应头里如果有Accept-Range,说明支持分段加载,比如打开一个百度美女图片

    截屏2020-09-13 上午10.00.54.png

    就代表支持分段加载,单位是 bytes,我们可以在请求头里指定 Range:bytes=0-1000,这个图片是 2000 字节,这样只会显示一半。下半段我们没有请求。

    Cookie/Set-Cookie

    发送和设置 Coolie

    Authorization

    授权信息

    Accept

    客户端能接受的数据类型,如 text/html

    Accept-Charset

    客户端能接受的字符集

    Accept-Encoding

    客户端能接受的压缩编码类型,如 gzip

    Content-Encoding

    压缩类型,如 gzip

    相关文章

      网友评论

        本文标题:HTTP 基础知识

        本文链接:https://www.haomeiwen.com/subject/shdnektx.html