/ Computer Science

HTTP协议之简单总结

HTTP是一种无状态的协议,即浏览器和服务器无需建立持久的联系。

简单来说,就是客户端向服务端发起请求(request),然后服务端向客户端进行响应(response)。

HTTP请求

HTTP请求由请求行、请求头、请求正文组成。请求行包含请求方法,文件路径与HTTP版本;请求头内包含Host主机地址等一系列属性,这个会在后面一篇博文里进行总结;然后就是请求正文。
举个栗子:
GET http://lonelyme.cn/ HTTP/1.1
Host: lonelyme.cn
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.109 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8
DNT: 1
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8

首先是请求行:
GET http://lonelyme.cn/ HTTP/1.1
这里包含了GET请求,文件路径(http:// lonelyme.cn)和HTTP版本(HTTP/1.1)。

然后是请求头:

Host: lonelyme.cn
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.109 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
DNT: 1
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8

这里包含了各种属性,比如Host,Connection,User-Agent等等……

最后才是请求正文(这个数据包没有附上正文,只是简单地请求一个网页)。

HTTP响应

HTTP响应报文由响应行、响应头、正文组成;响应行又由HTTP版本、状态码、消息组成。
再举个栗子吧!
HTTP/1.1 304 Not Modified
Server: nginx/1.10.3 (Ubuntu)
Date: Wed, 02 Aug 2017 10:46:01 GMT
Connection: close
X-Powered-By: Express
Cache-Control: public, max-age=0

在进行了上文的请求后,服务器给我们发来了这个响应报文。现在来分析一下:
HTTP/1.1 304 Not Modified
在响应行里,包含了HTTP版本(HTTP/1.1),状态码(304)与消息(Not Modified).

Server: nginx/1.10.3 (Ubuntu)
Date: Wed, 02 Aug 2017 10:46:01 GMT
Connection: close
X-Powered-By: Express
Cache-Control: public, max-age=0

然后是响应头,这里包含Server、Date、Connection、X-Powered-By、Cache-Control等属性。
在这里我们收到一个304的状态码,所以没有正文,详情我会在另一篇博文里详谈。

请求方法

HTTP的请求方法常见以下几种:

  • GET
    • 用于获取请求页面的指定信息
  • POST
    • 与GET类似,但区别在于GET方法没有请求内容,但POST方法是有的,多用于向服务器发送大量数据
  • HEAD
    • 除了服务器不能在响应里返回消息主题以外,其余和GET相同
  • PUT
    • 请求服务器把请求中的实体存储在请求资源下
  • DELETE
    • 请求服务器删除指定资源
  • OPTION
    • 请求获得URL在请求/响应的通信过程中可以使用的功能或了解服务器的信息、性能等

这里要注意的是,PUT和DELETE方法可以操纵到目标服务器的文件,属于危险方法,服务器一般都会关闭这两个方法。

HTTP状态码

1xx 已被成功接收,继续处理 100~101
2xx 成功,服务器成功处理了请求 200~206
3xx 重定向,告诉浏览器客户端访问的资源已被移动,并附上新的资源地址位置 300~305
4xx 客户端错误状态码 400~415
5xx 服务器内部错误 500-505

以下是一些常见的验证码:
200 成功
302 重定向
404 请求资源不存在
400 请求有语法错误,不能被服务器所识别
401 请求未授权
403 服务器收到请求,但拒绝提供服务
500 服务器内部错误
503 服务器暂时不能提供服务

好啦!先到这里!我们以后再续!

HTTP协议之简单总结
Share this

Subscribe to Zed's Blog