1.定义
包含两种
- 请求request
- 响应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. 请求行 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. 状态行
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