索引
请求报文
请求行
三部分:请求方法、请求URL(不包括域名),http协议版本
请求方法
get:get方法的请求,请求参数和对应的值跟在URL后面,get方法要求服务器将url定位的资源放在相应报文的数据部分,回送给客户端。弊端就是参数和参数值都暴漏URL中,字符串长度有限制,不超过1024
post:弥补了get方法不足,因为post将传输的数据封装在报文中,数据大小没限制,没有直接暴漏URL中,所以比较私密安全
head:偶尔用到,服务端接受head请求后只返回响应头,而不会发送内容,提高传输效率,如果查看某个页面状态,head非常高效的。
请求头
由键/值组成,每行一对,键和值用冒号分隔":",请求头部告知服务器所有关于客户端请求信息,有:
User-Agent:产生请求的用户代理信息(浏览器信息): Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36等;
Accept:客户端可识别的内容类型列 :text/html,application/xhtml+xml,application/xml;
Accept-Language:客户端可接受的自然语言 - zh-CN,zh;q=0.8,en;q=0.6,id;q=0.4;
Accept-Encoding:客户端可接受的编码压缩格式 - gzip, deflate, sdch, br
Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机
connection:连接方式,有close和keep-alive两种。
close:告诉WEB服务器或代理服务器,在完成本次请求的响应后,断开连接
keep-alive:告诉WEB服务器或代理服务器。在完成本次请求的响应后,保持连接,以等待后续请求
Cookie:存储于客户端扩展字段,向同一域名的服务端发送属于该域的cookie - PSTM=1490844191; BIDUPSID=2145FF54639208435F60E1E165379255;
空行
用于进行内容分割,表示请求头到此为止,下一行内容不再是请求头
请求体
请求体包括 请求数据,get没请求体
响应报文
http响应有四个部分组成
状态行
格式:HTTP-Version(表示服务器http协议版本) Status-Code(表示服务器发回的响应状态码) Reason-Phrase(表示状态码文本描述) CRLF
状态码有三位数组成,第一个数字定义了响应的类别
1xx:指示信息--表示请求已接收,继续处理。
2xx:成功--表示请求已被成功接收、理解、接受。
3xx:重定向--要完成请求必须进行更进一步的操作。
4xx:客户端错误--请求有语法错误或请求无法实现。
5xx:服务器端错误--服务器未能实现合法的请求。
各类型常见状态代码、状态描述的说明如下:
200 OK:客户端请求成功。
400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
403 Forbidden:服务器收到请求,但是拒绝提供服务。
404 Not Found:请求资源不存在,举个例子:输入了错误的URL。
500 Internal Server Error:服务器发生不可预期的错误。
503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,举个例子:HTTP/1.1 200 OK(CRLF)。
响应头
和请求报文请求头类似,这些响应头域允许服务器传递不能放在状态行附加信息
erver:包含处理请求的原始服务器的软件信息;
Date:服务器日期;
Content-Type:返回的资源类型 (MIME);
Connection:连接方式;
close:连接已经关闭;
keep-alive:连接已保持,在等待本次连接的后续请求;
Cache-Control:缓存控制;
Expires:设置过期时间;
Set-Cookie:设置 Cookie 信息。
空行
作为内容分割,表示以下不再是响应头的内容
响应体
这个是服务器返回给浏览器的响应信息