网络-3 【HTTP报文、请求方式、GET与POST】
一.HTTP报文
(1).概念基础
- HTTP基于TCP/IP通信协议来传递数据
- HTTP基于客户端/服务端(C/S)架构模型
- 通过一个可靠得连接来交换信息,是一个无状态得请求/响应协议
- 限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间
- 只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送,客户端以及服务器指定使用适合的MIME-type内容类型
- Miltipurpose Internet Mail Extensions type 多用途互联网邮件扩展类型
- 协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快
- HTTP报文定义:在客户端与服务器之间发送的数据块。这些数据块以一些文本的元信息开头,描述了报文的内容及含义,后面跟着可选的数据部分,这些报文在客户端,服务器和代理之间流动。所以HTTP报文的发送也叫报文流
- 每条HTTP报文包含一个客户端请求和服务端响应
- 请求报文Request和响应报文Response
(2).HTTP报文传输流程图
(3).HTTP报文的组成部分
(5).报文种类
二.请求方式
(1).种类
- GET/POST
- PUT:向指定资源位置上传其最新内容(form表单不支持)
- DELETE:请求服务器删除Request-URI所标识的资源(form表单不支持)
- Head:返回与GET请求相一致的响应,响应体被返回
- Trace:回显服务器收到的请求,主要用于测试或诊断
- Connect:连接改为管道方式的代理服务器
- Options:返回服务器针对特定资源所支持的HTTP请求方法
(2).put/delete
- put: 上传资源,Form表单不支持,提交即存储的原则(无验证机制,有安全漏洞),需配置服务器支持put方式转发打给后端操作
- delete:删除资源,Form表单不支持,提交即删除的原则(无验证机制,有安全漏洞),需配置服务器支持put方式转发打给后端操作
- post:修改资源
- get:获取资源
- 4种不同的请求方式是为了分清楚不同请求的目的,但是并不代表用了post就一定要修改数据,用get就不能修改资源
三.GET与POST
(1)GET/POST
- GET主要用来获取数据
- GET的数据在请求体中是查询字符串参数(Query String Parameters)
- POST主要用于传输数据到后端进行增加,删除,更新数据,提交表单
- POST的数据在请求体中是表单数据(Form Data)
- GET/POST: view source中仍然是url参数键值对形式a=1&b=2
(2).两者区别
- POST更安全
- 不会作为url的一部分,不会被缓存,保存在服务器日志和浏览器记录中
- POST发送的数据量更大(GET有url长度限制)
- POST能发送更多的数据类型(GET只能发送ASCII字符)
- POST比GET速度慢
2.POST接收数据之前会先将请求头发送给服务器确认,然后发送数据
2.持久化连接:(connection:keep-alive)连接不会关闭
3.管道持久化连接(把所有请求放到发送队列里,不等响应,一个一个发送请求的同时接收相应的响应)
(3).幂等
一个HTTP请求中,不会对数据或状态做修改,并且每次请求都会返回同样的结果
GET请求必须遵守幂等性,从HTTP请求上来看,GET只能获取数据
一个管道中有10个请求,发送了9个,但是连接关闭了,即使收到了9个响应,这9个响应内容也被清空,那么客户端将会重新发起这9个请求,但是9个响应收到就证明服务器已经做了相应的操作,如果是非幂等的请求,则会出现操作的错误(支付和增删改会出问题)