美文网首页
图解http(一)

图解http(一)

作者: 2林子易2 | 来源:发表于2017-07-30 23:51 被阅读0次

    从今天开始阅读图解http这本书,下载地址:我的百度云

    http的发展史

    这个我就不说了,总之起因就是因为一个家伙想知识共享就搞出来这个东西。http协议的更新还是很慢的,不像IE都到多少了。目前http协议正在准备出2.0,听说老快了,市面上主流的还是1.1。

    相关协议

    与http关系比较大的几个协议就是:tcp、ip、dns
    下面一张图形象说明了http与这几个协议的关系。


    http请求过程

    URI和URL

    URI包含着URL

    Uniform Resource Identifier
    统一格式 资源 标识
    http/ftp ---- ----

    标准格式
    http://[user:pass@]www.example.jp:80/dir/index.html?uid=1#ch1
    协议 登陆信息 服务器地址 端口 文件路径 查询字符串 片段标识符

    第二章

    请求和响应报文的组成

    请求报文 响应报文

    服务器请求

    除了对服务器资源的请求,还可以对服务器本身进行请求。比如:
    OPTIONS * HTTP/1.1
    这是对服务器支持http方法种类的查询。

    请求方法

    • GET(SELECT)
      用于请求资源,一般用于页面请求,数据请求等。根据RESTful架构理解来看,这些都属于服务器的资源。参照理解RESTful架构
    • POST(CREATE)
      在服务器新建一个资源。通过提交服务器一些数据,服务器根据这些数据进行处理和资源的创建。
    • PUT(UPDATE)
      在服务器更新资源(客户端提供改变后的完整资源)。
    • PATCH(UPDATE)
      在服务器更新资源(客户端提供改变的属性)。
    • DELETE(DELETE)
      从服务器删除资源。
    • HEAD
      获取资源的元数据。和GET方法一样,不过不返回报文主体。用于确认URI的有效性和资源更新的时间。
    • OPTIONS
      用来查询针对请求URI资源的支持方法。
    • TRACE
      trace和网络路径查询差不多,它是在Max-forwards首部字段中填入最大跳数,然后每一跳减一,减为0停止,响应体为每一跳的信息。这个不常用,而且还容易引发XST(跨站追踪)。
    • CONNECT
      要求用隧道协议连接代理
    请求方法

    PUT、PATCH、DELETE在一般网站上都不会用到,RESTful架构的网站可能会开放。主要是因为HTTP/1.1的这些方法都不带验证机制。

    持久连接和管线化

    最初的http是每次http请求响应完成都会断开tcp连接,这样如果一个页面有很多图片就会有很多次tcp三次握手四次挥手,很耗时间。
    http1.1提出keep-alive,只要没有一端提出明确的断开连接,就一直保持tcp连接通道,节省了多次tcp连接的时间。
    管线化则提出http请求的同时发送,像是异步一样,不等待前面http响应的回馈,异步等待回馈。

    Cookie

    http是无状态协议,它的状态通过cookie来保持。
    响应在header中添加set-cookie告诉客户端下次请求加上cookie
    请求在header中添加客户端所有的cookie

    cookie传输

    状态码

    服务器向用户返回的状态码和提示信息,常见的有以下一些(方括号中是该状态码对应的HTTP动词)。

    200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
    201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
    202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)
    204 NO CONTENT - [DELETE]:用户删除数据成功。
    400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。
    401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。
    403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止  的。
    404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
    406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
    410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。
    422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。
    500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。
    

    状态码的完全列表参见这里

    传送门
    RESTful API 设计指南
    理解RESTful架构

    相关文章

      网友评论

          本文标题:图解http(一)

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