指令消息
指令消息开始于一条请求行,包括请求类型,URL和HTTP版本
GET http:///www.baidu.com HTTP/1.1
get是一个请求类型,用来请求被URL所指定的文档,协议版本是HTTP/1.1
- 请求类型
GET:
- GET交互方式是从服务器上获取数据,而并非修改数据,所以GET交互方式是安全的。就像数据库查询一样,从数据库查询数据,并不会影响数据库的数据信息,对数据库来说,也就是安全的。
- GET交互方式是幂等的,幂等是一个数学概念,幂等函数就是可以使用相同参数重复执行,并且能获得相同结果的函数。在GET交互这里就是,对同一个URL的多个请求,得到的结果是相同的。就像数据库查询,不同的数据库连接对同一个数据库表用相同条件查询时,得到的结果也是一样的。
POST
- POST交互是可以修改服务器数据的一种方式,涉及到信息的修改,就会有安全问题。就像数据库的更新,Update一个数据库表时,如果条件没有写对,就可能把不需要修改的数据给修改了,得到的数据就是错误的了。
- 一般的POST交互是必须要用到表单的,但是表单提交的默认方法是GET,如果改为POST方式,就需要修改表单提交时的Method。
表现形式的区别
- get方法查询字符串(名称/值对)是在get请求的URL中发送的。
>GET /test/demo_form.php?name1=value1&name2=value2 HTTP/1.1
POST方法查询字符串是在POST请求的HTTP消息主体中发送的
通过fiddler传递POST参数
- post请求主体详解:
get请求没有请求主体entity-body。post请求不会对发送请求的数据格式进行限制,理论上可以发任意数据(服务器处理与否是另一回事)。
服务器收到数据后,它会以请求头中的Content-Type设置的内容来进行数据解析。确定Content-Type的格式之后,也就确定了请求主体的数据格式。
Content-Type 格式 |
---|
application/x-www-form-urlencoded |
application/json |
text/xml |
multipart/form-data |
在fiddler中,我们通过Composer功能进行完成post的传输
- URL的格式:
method://host[:port][/path]
method 方法指明用来获得文档的文件传输协议,默认为HTTP,也可以支持其他文件传输协议。部分请求类型由于安全问题被禁用,所以没有显示出来。
HTTP请求类型 | 作用 |
---|---|
GET | 获取URL指定文件 |
HEAD | 获取URL所指定的文档的标题 |
POST | 向服务器提供数据 |
回应消息
回应消息与指令消息军记与ASCII码,回应消息始于一条状态行,包括HTTP版本,3为ASCII数字或回应码和状态短语
HTTP/1.1 404 File not found
- 回应码格式
代码 | 回应状态 |
---|---|
1XX | 信息消息 |
2XX | 成功的请求 |
3XX | 将客户端作为URL专职另一个指定的文档 |
4XX | 客户端错误 |
5XX | 服务器错误 |
HTTP消息头部
HTTP头部包含多一行或多行文本
Header Name: sp Header Value
常用的一些头部 | 功能 |
---|---|
Cache-contral | 用于指定那个关于客户端缓存的信息 |
Connection | 指示连接是否应被关闭 |
Date | 当前日期 |
MIME-version | 正在使用的MIME版本 |
Connecttion | 用于确定连接的类型 |
Keep-alive | 管理保持激活的连接 |
请求头部用于请求信息,能给服务器提供关于浏览器和用户的信息
常用的请求头部:
头部 | 功能 |
---|---|
Accept | 浏览器能接受哪些数据格式 |
Accept-charset | 接受的字符集 |
Accept-encoding | 接受的编码方式 |
Accept-language | 接受的语言 |
From | 提供浏览器上用户的电子邮箱 |
Host | 提供浏览器主机和瞬时端口 |
Referer | 接受连接文档的URL |
User-agent | 浏览器的软件信息 |
- 回应头部
回应头部报告关于服务器和被请求文档的返回信息
回应头部
头部 | 功能 |
---|---|
Accept-range | 服务器ui请求的范围 |
Retry-after | 服务器空闲的日期 |
Server | 服务器应用程序的名称和版本 |