HTTP协议

特性

  • 基于TCP/IP协议之上,默认端口80
  • 无连接无状态的

报文

请求报文

Http协议规范把请求分为三个部分:状态行 请求头 消息主体

  



通用头信息

通用头域包含缓存头部Cache-Control、Pragma及信息性头部Connection、Date、Transfer-Encoding、Update、Via

  • Cache-Control
  • Connection 表示是否需要持久连接 Keep-Alive:如果浏览器请求保持连接,则该头部表明希望 WEB 服务器保持连接多长时间(秒),如Keep-Alive:300
  • Date Date头域表示消息发送的时间,服务器响应中要包含这个头部,因为缓存在评估响应的新鲜度时要用到,其时间的描述格式由RFC822定义。例如,Date:Mon, 31 Dec 2001 04:25:57 GMT。Date描述的时间表示世界标准时,换算成本地时间,需要知道用户所在的时区。
  • Transfer-Encoding WEB 服务器表明自己对本响应消息体(不是消息体里面的对象)作了怎样的编码,比如是否分块(chunked),例如:Transfer-Encoding: chunked

请求头

  • accept 告诉服务起自己接受什么介质类型
  • Accept-Encoding 浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate)
  • Host 客户端指定自己想访问的WEB服务器的域名/IP 地址和端口号
  • User-Agent 浏览器表明自己的身份(是哪种浏览器)。例如:User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN;rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14

HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE

get与post区别

本质上的区别:本质上都是TCP链接 get产生一个TCP数据包,post产生两个数据包
get请求会把http header 和 data 一并发送出去,服务器相应200;
post请求浏览器先发送header 服务器响应100,继续 在发送data,服务器响应200ok
语义上的区别:get用于获取数据,post用于提交数据。
get参数有长度限制(受限于url长度,具体的数值取决于浏览器和服务器的限制),而post无限制
安全性区别:get明文 不安全 post安全

响应报文

HTTP 响应与 HTTP 请求相似,HTTP响应也由3个部分构成,分别是:

状态行
响应头(Response Header)

  • Server
    WEB 服务器表明自己是什么软件及版本等信息。例如:Server:Apache/2.0.61 (Unix)
    响应正文

常见的状态码有如下几种:

  • 200 OK 客户端请求成功
  • 301 Moved Permanently 请求永久重定向
  • 302 Moved Temporarily 请求临时重定向
  • 304 Not Modified 文件未修改,可以直接使用缓存的文件。
  • 400 Bad Request 由于客户端请求有语法错误,不能被服务器所理解。
  • 401 Unauthorized 请求未经授权。这个状态代码必须和WWW-Authenticate报头域一起使用
  • 403 Forbidden 服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提供服务的原因
  • 404 Not Found 请求的资源不存在,例如,输入了错误的URL
  • 500 Internal Server Error 服务器发生不可预期的错误,导致无法完成客户端的请求。
  • 503 Service Unavailable 服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常。

![Upload image.png failed. Please try again.]

你可能感兴趣的:(HTTP协议)