本文共 2655 字,大约阅读时间需要 8 分钟。
1、请求协议
请求首行; # 请求方式 请求路径 协议和版本,例如:GET /index.html HTTP/1.1请求头信息;# 请求头名称:请求头内容,即为key:value格式,例如:Host:localhost空行; # 用来与请求体分隔开 请求体。 # GET没有请求体,只有POST有请求体 |
2、get 请求
HTTP默认的请求方法就是GET * 没有请求体 * 数据必须在1K之内! * GET请求数据会暴露在浏览器的地址栏中 -
GET 127.0.0.1:8090/login HTTP/1.1:GET请求,请求服务器路径为 127.0.0.1:8090/login ,协议为1.1; -
Host: localhost:请求的主机名为localhost; -
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0:与浏览器和OS相关的信息。有些网站会显示用户的系统版本和浏览器版本信息,这都是通过获取User-Agent头信息而来的; -
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8:告诉服务器,当前客户端可以接收的文档类型,其实这里包含了*/*,就表示什么都可以接收; -
Accept-Language: zh-cn,zh;q=0.5:当前客户端支持的语言,可以在浏览器的工具选项中找到语言相关信息; -
Accept-Encoding: gzip, deflate:支持的压缩格式。数据在网络上传递时,可能服务器会把数据压缩后再发送;指定客户端浏览器可以支持的web服务器返回内容压缩编码类型。表示允许服务器在将输出内容发送到客户端以前进行压缩,以节约带宽。而这里设置的就是客户端浏览器所能够支持的返回压缩格式。 -
Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7:客户端支持的编码; -
Connection: keep-alive:客户端支持的链接方式,保持一段时间链接,默认为3000ms; -
Cookie: JSESSIONID=369766FDF6220F7803433C0B2DE36D98:因为不是第一次访问这个地址,所以会在请求中把上一次服务器响应中发送过来的Cookie在请求中一并发送去过;这个 Cookie的名字为JSESSIONID。 |
3、post 请求
(1) 数据不会出现在地址栏中 (2) 数据的大小没有上限 (3) 有请求体 (4) 请求体中如果存在中文,会使用URL编码! -
Referer: http://localhost:8080/hello/index.jsp:请求来自哪个页面,例如你在百度上点击链接到了这里,那么Referer:http://www.baidu.com;如果你是在浏览器的地址栏中直接输入的地址,那么就没有Referer这个请求头了;它可以用来做统计工作,也可以用来做防盗链。 -
Content-Type: application/x-www-form-urlencoded:表单的数据类型,说明会使用url格式编码数据;url编码的数据都是以“%”为前缀,后面跟随两位的16进制。 显示此HTTP请求提交的内容类型。一般只有post提交时才需要设置该属性 有关Content-Type属性值有如下两种编码类型: (1)“application/x-www-form-urlencoded”: 表单数据向服务器提交时所采用的编码类型,默认的缺省值就是“application/x-www-form-urlencoded”。然而,在向服务器发送大量的文本、包含非ASCII字符的文本或二进制数据时这种编码方式效率很低。 (2)“multipart/form-data”: 在文件上载时,所使用的编码类型应当是“multipart/form-data”,它既可以发送文本数据,也支持二进制数据上载。 当提交为表单数据时,可以使用“application/x-www-form-urlencoded”;当提交的是文件时,就需要使用“multipart/form-data”编码类型。 |
4、响应协议
响应首行; HTTP协议版本号, 状态码, 状态消息 响应头信息; 空行; 响应体 html页面 - HTTP/1.1 200 OK:响应协议为HTTP1.1,状态码为200,表示请求成功,OK是对状态码的解释;
-
Server:WSGIServer/0.2 CPython/3.5.2:服务器的版本信息; -
Content-Type: text/html;charset=UTF-8:响应体使用的编码为UTF-8; -
Content-Length: 724:响应体为724字节; -
Set-Cookie: JSESSIONID=C97E2B4C55553EAB46079A4F263435A4; Path=/hello:响应给客户端的Cookie; -
Date: Wed, 25 Sep 2012 04:15:03 GMT:响应的时间,这可能会有8小时的时区差; 告诉浏览器不要缓存的响应头: -
Expires: -1; -
Cache-Control: no-cache; -
Pragma: no-cache; 自动刷新响应头,浏览器会在3秒之后请求http://www.baidu.com: HTML中指定响应头 在HTMl页面中可以使用<meta http-equiv="" content="">来指定响应头,例如在index.html页面中给出<meta http-equiv="Refresh" content="3;url=http://www.baidu.com">,表示浏览器只会显示index.html页面3秒,然后自动跳转到http://www.baidu.com. |
转载于:https://www.cnblogs.com/snailgirl/p/9041082.html