HTTP协议
HTTP协议
HTTP是HyperText Transfer Protocol(超文本传输协议)的简写,传输HTML文件。
用于定义WEB浏览器与WEB服务器之间交换数据的过程及数据本身的格式。
以访问www.baidu.com为例
一、请求部分

1.1、请求消息行
GET /day08_02/1.html HTTP/1.1
请求方式:Get(默认) POST DELETE HEAD等
GET:明文传输 不安全,数据量有限,不超过1kb
GET /day08_02/1.html?uName=tom&pwd=123 HTTP/1.1
POST: 暗文传输,安全。数据量没有限制。
URI:统一资源标识符。去协议和IP地址。
1.2、请求消息头:客户端浏览器告诉服务器一些信息
Accept:浏览器可接受的MIME类型。告诉服务器客户端能接收什么样类型的文件。
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Charset:浏览器告诉服务器它支持哪种字符集
//Accept-Charset
Accept-Encoding:浏览器能够进行解码的数据编码格式
Accept-Encoding: gzip, deflate, br
Accept-Language:浏览器所希望的语言种类。当服务器提供一种以上的语言版本的时候会用到
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cache-Control: no-cache
Connection:表示是否需要持久链接。为keep-alive或HTTP1.1默认进行持久连接
Connection: keep-alive
Content-length:表示请求消息正文的长度
//Content-Length:17
Content-Type:内容类型。告诉服务器浏览器传输数据的MIME类型,文件传输的类型
//Content-Type:application/x-www-form-urlencoded
Cookie:这是重要的请求头信息(在会话的时候进行解析)
Cookie: BAIDUID=793906BB16C965442EADAC2737F981D2:FG=1;
PSTM=1534957926; BD_UPN=12314753; BIDUPSID=44CEC76791B8D7FCCEEDE315CDF3808C;
delPer=0; BD_HOME=0; H_PS_PSSID=; BD_CK_SAM=1;
PSINO=7; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; BDSVRTM=0
初始化URL中的主机和端口
Host: www.baidu.com (localhost:8080)
Pragma: no-cache
Upgrade-Insecure-Requests: 1
User-Agen:浏览器的类型
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
告诉服务器,我(当前请求)从哪里来?
Referer:http://localhost/login.html
作用:防盗链、统计工作

Date:请求的时间 GMT
//Date:Date: Mon, 22 Aug 2018 01:55:39
1.3、请求空行:
空行,就是用于分割POST请求的请求头,和请求体的。
1.4、请求体:
当请求的方式是POST的时候才能看到中文(封装POST请求消息的请求参数)。
GET方式时是在URL地址上uname=tom&pwd=123
二、响应部分
2.1、响应消息行
协议/版本 响应状态码 对响应码的描述(一切正常)
HTTP/1.1 200 OK
2.2、响应消息头
服务器发送过来的数据采用的编码格式
Content-Encoding: gzip
告诉浏览器正文的长度
Content-length:80
服务器发送的文本的语言
Content-Language:zh-cn
服务器发送的内容的MIME类型。以及字符集
Content-Type: text/html (Content-Type: text/html;charset=UTF-8)
Cxy_all: baidu+b66f84a5fd08b9e0971244ca02931cc7
Date: Sat, 13 Oct 2018 08:28:53 GMT
Expires: Sat, 13 Oct 2018 08:28:27 GMT
指示客户端刷新的频率,单位是秒
Refresh: 1;url=http://www.baidu.com
指示服务器的类型。服务器名字。Servlet一般不设置这个值,而是由Web服务器自己设置。
Server: BWS/1.1 (apache tomcat)
服务端发送来的Set-Cookie
Set-Cookie: delPer=0; path=/; domain=.baidu.com
Set-Cookie: BDSVRTM=0; path=/Set-Cookie: BD_HOME=0; path=/
Set-Cookie: H_PS_PSSID=1440_21100_26350_20928; path=/; domain=.baidu.com
Strict-Transport-Security: max-age=172800
Transfer-Encoding: chunked
Vary: Accept-Encoding
X-Ua-Compatible: IE=Edge,chrome=1
Date:响应的时间 GMT
//Date:Date: Mon, 22 Aug 2018 01:55:39
指定新的资源的位置,通常和302/307一起使用,完成请求重定向。
//Location: http://www.it315.org/index.jsp
Expires: -1
Cache-Control: no-cache (1.1)
Pragma: no-cache (1.0) 表示告诉客户端不要使用缓存
内容安排,消息头指示回复的内容该以何种形式进行展示。是以内联(即网页或者页面的一部分,还是以附件的形式下载并保存到本地。
Content-Disposition: inline(默认值,在当前页面内打开) | attachment | attachment; filename="filename.jpg"(以附件形式打开响应体。文件下载)
2.3、响应空行
2.4、响应体:
传输的数据。即源码和资源文件(和网页右键”查看源码”看到的内容一样)。
响应字符串格式
Connection: keep-alive HTTP/1.1 200 OK Content-Type: text/html;charset=UTF-8 Content-Length: 101 Date: Wed, 06 Jun 2018 07:08:42 GMT <html> <head> <title>$Title$</title> </head> <body> hello , response </body> </html>

浙公网安备 33010602011771号