本文简要介绍了Http协议的定义、请求、响应、状态等。

什么是HTTP协议

超文本传输协议,是服务器和客户端之间,传输超文本的传送协议。

HTTP工作流程

  1. 客户端连接到Web服务器,建立TCP连接;
  2. 客户端发送http请求;
  3. 服务器接收请求并返回http响应;
  4. 释放http连接;
  5. 客户端解析html。

HTTP请求

  • get示例
  1. GET /562f25980001b1b106000338.jpg HTTP/1.1
  2. Host img.mukewang.com
  3. User-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
  4. Accept image/webp,image/*,*/*;q=0.8
  5. Referer http://www.imooc.com/
  6. Accept-Encoding gzip, deflate, sdch
  7. Accept-Language zh-CN,zh;q=0.8
  • post示例
  1. POST / HTTP1.1
  2. Host:www.wrox.com
  3. User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
  4. Content-Type:application/x-www-form-urlencoded
  5. Content-Length:40
  6. Connection: Keep-Alive
  7. name=Professional%20Ajax&publisher=Wiley
  1. 请求行
  2. 请求头
  3. 空行
  4. 请求体

HTTP响应

  • html 响应示例
  1. HTTP/1.1 200 OK
  2. Date: Fri, 22 May 2009 06:07:21 GMT
  3. Content-Type: text/html; charset=UTF-8
  4. <html>
  5. <head></head>
  6. <body>
  7. <!--body goes here-->
  8. </body>
  9. </html>
  1. 状态行
  2. 消息报头
  3. 空行
  4. 响应正文

HTTP状态码

  1. 1xx:指示信息--表示请求已接收,继续处理
  2. 2xx:成功--表示请求已被成功接收、理解、接受
  3. 3xx:重定向--要完成请求必须进行更进一步的操作
  4. 4xx:客户端错误--请求有语法错误或请求无法实现
  5. 5xx:服务器端错误--服务器未能实现合法的请求
  6. # 常见状态码
  7. 200 OK //客户端请求成功
  8. 302 OK //重定向
  9. 400 Bad Request //客户端请求有语法错误,不能被服务器所理解
  10. 401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
  11. 403 Forbidden //服务器收到请求,但是拒绝提供服务
  12. 404 Not Found //请求资源不存在,eg:输入了错误的URL
  13. 500 Internal Server Error //服务器发生不可预期的错误

参考

关于HTTP协议,一篇就够了

三次握手、四次握手