圣泉山人 后端开发工程师

Http协议

2015-07-21

http协议

HTTP:HyperText Transfer Protocol ,超文本传输协议

HTTP协议的特点

  • 支持c/s模式
  • 简单快速:只需请求方法和路径
  • 灵活:HTTP协议之间并没规定传输的数据的内容,可以是字符流也可以是二进制
  • 无连接:每次连接只处理一个请求,当浏览器发起一次请求,服务器只能响应一次,一旦请求被服务器请求完毕,浏览器就会与服务器断开连接。
  • 事务处理没记忆能力,http协议的无连接:一次请求只能有一个响应,多次请求间服务器是不能识别浏览器的(健忘症)

http协议组成

  • http请求:浏览器向服务器发出请求的时候,应该遵循的协议
  • http相应:服务器向浏览器返回响应的时候,应该遵循的协议

http请求

  • 请求行: 独占一行,请求方式(GET和POST URI)资源路径 协议版本(HTTP/1.1)
  • 请求头: 每一个请求他占一行,每一个请求头就是一个具体的协议: 协议名:协议内容
  • 空行 : 告诉服务器,请求头已经结束,下面的内容是请求数据
  • 请求数据: POST形式提交数据的时候,才会的数据。 表单名字=值&表单名字=值。。

常见的请求头

  • Host: 服务器的主机地址,通常是主机名 比如: host:www.itcast.cn
  • Accept-encoding: 接收的文件编码格式(不是字符集,gzip分类)
  • Referer: 当前请求是由上一次什么请求发展而来,记录的是上一次请求的url (可以用于防盗链)
  • Connection: 保存连接,在http/1.1协议之后,都是keep-alive,一次请求还没有被完全响应之间,不要断开连接
  • Accept-language: 浏览器可以接收的语种(中文、英文)
  • Cookie: 是一种服务器将数据保存在浏览器上的技术:浏览器能够将本地的属于当前请求的服务器的cookie数据通过cookie协议进行携带
  • User-agent: 用户代理,代表当前浏览器的大部分信息
  • Accept: 浏览器能够接收的数据格式(text/html/image/png等
  • Content-length (post:提交的数据的长度,只post才数据提交(GET数据是在URI上
  • If-modified-since (get:浏览器会缓存之前请求过的数据,浏览器会在下次请求同样数据的时候,发送一个当前文件的缓存时间告诉服务器进行判断,服务器告诉浏览器是否需要重新请求
  • Content-type (post:post数据提交的时候才会存在:将数据进行格式转换(转码)

http响应

  • 状态行 : 独占一行。 协议版本(HTTP/1.1) 状态码(服务器对响应的一张编码) 状态描述(对状态码的解释)
  • 响应头 : 与请求头一样,很多. 每个响应头占一行: 响应协议名字 : 值
  • 空行 : 告诉服务器,请求头已经结束,下面的内容是响应数据
  • 响应数据 : 服务器返回的所有数据

常见的响应头

  • Server : 服务器信息
  • Date : 响应时间
  • last-modified : 最后修改时间与请求头中的if-modified-since对应
  • content-length : 响应的数据的长度
  • content-type : 数据的类型(text/html,image/png等)
  • Location : 重定向,告诉服务器立即重新发起请求,请求location给定的值:浏览器不需要向下继续解析其他响应头(到此结束)
  • Refresh : 重定向,告诉服务器在指定时间之后再重新发起请求,请求refresh中的url对应的值: 浏览器应该继续向下解析
  • content-encodeing : 与请求头的accept-encoding一致, 文件编码格式,gzip等
  • cache-control : 缓存控制, 服务器的内容告诉浏览器要不要缓存: no-cache告诉浏览器不要缓存.

状态码

服务器对于请求的处理情况的基本描述:浏览器一旦读到对应的状态码就能分析出服务器的处理状态状态码总体分为5类

  • 1XX: 服务器已经开始处理,但是还没处理完
  • 2XX: 服务器已经正确处理
  • 3XX: 重定向: 服务器需要浏览器重新请求
  • 4XX: 请求错误: 浏览器发起的请求服务器不能正确解析
  • 5XX: 服务器错误: 服务器内部出现了

常见的状态码

  • 200: 请求成功(服务器已经正确处理)
  • 303: location: 应该重新发起请求
  • 304: 告诉浏览器读取本地缓存,不需要重新请求
  • 403: forbidden,没权限访问
  • 404: not found,找不到目标文件
  • 502: bad gateway: 服务器没从上游获取正确的结果

下一篇 PHP生成二维码

Comments

Content