程序员和IT人都应该懂的知识:HTTP入门图解

了解 Web 及网络基础 

程序员和IT人都应该懂的知识:HTTP入门图解

文章插图
 
对端传输
发送端在层与层间传输数据时,没经过一层都会被加上首部信息,接收端每经过一层都会删除一条首部
 
程序员和IT人都应该懂的知识:HTTP入门图解

文章插图
 
多种协议作用
IP 协议,TCP 协议和 DNS 服务在使用 HTTP 协议过程中发挥的作用
简单的 HTTP 协议请求报文和响应报文客户端像服务器发起请求时会生成一段请求报文,请求报文是由请求方法,URL,协议版本,可选的请求首部字段和内容实体构成 。
 
程序员和IT人都应该懂的知识:HTTP入门图解

文章插图
 
请求报文
【程序员和IT人都应该懂的知识:HTTP入门图解】接收到请求的服务器,会将请求内容的处理结构以响应的形式返回 。响应报文基本上由协议版本,状态码,用以解释状态的原因短语,可选的响应首部字段以及实体主体构成 。
 
程序员和IT人都应该懂的知识:HTTP入门图解

文章插图
 
响应报文
 
HTTP 是不保存状态的协议和 Cookie 的简单介绍HTTP 协议对于发送的请求和响应不做持久化处理 。这时候引入了 Cookie 技术用于状态管理 。Cookie 对用与登录的状态管理,没有 Cookie 这个技术的话,因为 HTTP 不保存状态,每次打开新网页都必须再次登录 。
Cookie 会根据响应报文中的 Set-Cookie 字段来通知客户端自动保存 Cookie 。下次请求时会自动发送 Cookie,服务器会比对数据得到状态结果 。
 
程序员和IT人都应该懂的知识:HTTP入门图解

文章插图
 
先引入副作用和幂等的概念 。
副作用指对服务器上的资源做改变,搜索是无副作用的,注册是副作用的 。
幂等指发送 M 和 N 次请求(两者不相同且都大于1),服务器上资源的状态一致 。注册10个和11个帐号是不幂等的,对文章进行更改10次和11次是幂等的 。
在规范的应用场景上说,Get 多用于无副作用,幂等的场景,例如搜索关键字 。Post 多用于副作用,不幂等的场景,例如注册 。
在技术上说:
  • Get 请求能缓存,Post 不能
  • Post 相对 Get 安全一点点,因为Get 请求都包含在 URL 里,且会被浏览器保存历史纪录,Post 不会,但是在抓包的情况下都是一样的 。
  • Post 可以通过 request body来传输比 Get 更多的数据,Get 没有这个技术
  • URL有长度限制,会影响 Get 请求,但是这个长度限制是浏览器规定的,不是 RFC 规定的
  • Post 支持更多的编码类型且不对数据类型限制
常见状态码 
程序员和IT人都应该懂的知识:HTTP入门图解

文章插图
 
常见状态码
 
2XX 成功
  • 200 OK,表示从客户端发来的请求在服务器端被正确处理
  • 204 No content,表示请求成功,但响应报文不含实体的主体部分
  • 206 Partial Content,进行范围请求
3XX 重定向
  • 301 moved permanently,永久性重定向,表示资源已被分配了新的 URL
  • 302 found,临时性重定向,表示资源临时被分配了新的 URL
  • 303 see other,表示资源存在着另一个 URL,应使用 GET 方法丁香获取资源
  • 304 not modified,表示服务器允许访问资源,但因发生请求未满足条件的情况
  • 307 temporary redirect,临时重定向,和302含义相同
4XX 客户端错误
  • 400 bad request,请求报文存在语法错误
  • 401 unauthorized,表示发送的请求需要有通过 HTTP 认证的认证信息
  • 403 forbidden,表示对请求资源的访问被服务器拒绝
  • 404 not found,表示在服务器上没有找到请求的资源
5XX 服务器错误
  • 500 internal sever error,表示服务器端在执行请求时发生了错误
  • 503 service unavailable,表明服务器暂时处于超负载或正在停机维护,无法处理请求
HTTP 首部通用首部指请求报文和响应报文都可以使用的字段