http协议

121 阅读4分钟

1.定义

包含两种

  1. 请求request
  2. 响应response

2. 请求request

//打印所有协议信息
curl -v http://www.baidu.com
//输出结果
//请求行
> GET / HTTP/1.1
//请求头
> Host: www.baidu.com
> User-Agent: curl/7.64.1
> Accept: */*
//请求内容
> 

请求信息包括3个

  1. 请求行
  2. 请求头
  3. 请求正文

1. 请求行 GET / HTTP/1.1

  • GET 为请求方法,可以是POST PUT DELETE
  • / 为请求地址
  • HTTP/1.1 协议

请求方法

  • GET 请求获取Request-URI所标识的资源
  • POST 在Request-URI所标识的资源后附加新的数据
  • HEAD 请求获取由Request-URI所标识的资源的响应消息报头
  • PUT 请求服务器存储一个资源,并用Request-URI作为其标识
  • DELETE 请求服务器删除Request-URI所标识的资源
  • TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
  • CONNECT 保留将来使用
  • OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求

2. 请求报头

  • Accept:指定接受的文件类型
  • Accept-Charset:浏览器可接受的字符集。
  • Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。
  • Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。
  • Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中。
  • Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,
  • Content-Length:表示请求消息正文的长度。
  • Cookie:这是最重要的请求头信息之一
  • Host:初始URL中的主机和端口。
  • If-Modified-Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答。
  • Pragma:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。
  • Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。
  • User-Agent:浏览器类型,//用户代理,可以是浏览器,也可以是命令行客户端,比如这里的是curl

3. 请求正文

  • 内容在请求的内容的最下面
  • 根据报头的Content-Type类型解析,格式包括
    • application/x-www-form-urlencoded: 默认格式,url参数
    • application/json: json格式
    • text/xml:xml格式
    • text/plain:纯文本格式
    • multipart/form-data:混合类型里面又可以嵌套Content-Type,同时描述文本与二进制流,使用的表单提交

3.响应 response

响应信息包括3个

  1. 状态行
  2. 信息报头
  3. 响应正文

1. 状态行

HTTP/1.1 200 OK
HTTP-Version Status-Code Reason-Phrase CRLF
  • HTTP-Version表示服务器HTTP协议的版本;
  • Status-Code表示服务器发回的响应状态代码;
  • Reason-Phrase表示状态代码的文本描述。

状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:

  • 1xx:指示信息--表示请求已接收,继续处理
  • 2xx:成功--表示请求已被成功接收、理解、接受
  • 3xx:重定向--要完成请求必须进行更进一步的操作
  • 4xx:客户端错误--请求有语法错误或请求无法实现
  • 5xx:服务器端错误--服务器未能实现合法的请求

常见状态代码、状态描述、说明:

  • 200 OK //客户端请求成功
  • 400 Bad Request //客户端请求有语法错误,不能被服务器所理解
  • 401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
  • 403 Forbidden //服务器收到请求,但是拒绝提供服务
  • 404 Not Found //请求资源不存在,eg:输入了错误的URL
  • 500 Internal Server Error //服务器发生不可预期的错误
  • 503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
  • eg:HTTP/1.1 200 OK (CRLF