美文网首页
图解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(一)

    图解HTTP第一章 通常使用的网络是在TCP/IP协议族的基础上运作的,而HTTP属于他内部的一个子集。 TCP/...

  • 图解http(一)

    从今天开始阅读图解http这本书,下载地址:我的百度云 http的发展史 这个我就不说了,总之起因就是因为一个家伙...

  • 图解HTTP(一)

    TCP/IP协议族 TCP/IP是互联网相关的各类协议族的总称。 TCP/IP的分层管理 按层次分别分为:应用层、...

  • 图解http(一)

    一、告知服务器意图的Http方法 GET:获取资源 1)返回资源2)if-Modified-Since:Thu,1...

  • 《图解HTTP》

    网络基础TCP/IPTCP/IP协议族说法一:TCP/IP是指TCP和IP两种协议说法二:TCP/IP是在IP协议...

  • 【图解 HTTP】

    HTTP 1.1 标准的通信过程:HTTP 方法协议格式保温结构首部字段状态码 web 安全httpsSSL证书认...

  • 图解HTTP

    第一章 了解Web及网络基础 1.1 使用HTTP协议访问Web 1.2 HTTP的诞生 1.2.1 为知识共享而...

  • 《图解HTTP》

    译者序 讲解网络协议的权威书籍有两本《HTTP权威指南》《TCP/IP详解》但是对初学者不是很友好 HTTP本身不...

  • 图解-HTTP

    HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网服务...

  • 图解HTTP

    HTTP是不保存状态的协议,协议本身不保留之前一切的请求或响应报文的信息。这是为了更快地处理大量事物,确保协议的可...

网友评论

      本文标题:图解http(一)

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