1.http请求介绍
用户上网需要物理连接,用户通过浏览器向服务端发送请求获取相关的数据,而这个过程需要遵循http协议.
http协议全称为:超文本传输协议 Hyper text transfer protocol
http协议工作与B/S架构
浏览器即客户端向服务器发送请求Request,服务器接收到请求后,向客户端发送响应信息Response.
2.常用的请求类型
1.post
向指定资源提交数据进行处理请求(提交表单、上传文件),又可能导致新的资源的建立或原有资源的修改,提交的数据一般包含在请求体中.
2.get
向特定资源发出请求(请求指定页面信息,并返回实体主体),携带的入参一般直接拼接在url上,也是最常见的请求类型之一.
3.delete
请求服务器删除资源*(请求服务器删除页面),参数一般直接拼接在url上.
4.put
向指定资源位置上上传其最新内容(从客户端向服务器传送的数据取代指定文档的内容)即更新数据,这个一般我们用的不多,如url可以在客户端确定,那么可使用put. POST 和 PU T之间的区别在于 PUT 请求是幂等的(idempotent)。也就是说,多次调用相同的 PUT 请求将始终产生相同的结果。相反,重复调用POST请求具有多次创建相同资源的副作用。
5.get和post的区别
- GET 请求可被缓存,而POST 请求不会被缓存
- GET 请求保留在浏览器历史记录中,而POST中的参数不会被保留
- GET 请求可被收藏为书签,而POST 不能被收藏为书签
- GET比POST更不安全,因为参数直接暴露在URL上,GET 请求不应在处理敏感数据时使用
- GET 请求有长度限制
- GET 请求只应当用于取回数据(不修改)
- GET请求会被浏览器主动cache,而POST不会,除非手动设置。
- GET请求只能进行url编码,而POST支持多种编码方式。
- 虽然一般GET请求的参数我们都放到url中,POST则放到请求体中,但本质上来说GET请求的参数也可以放在请求体中,POST的参数也能放在url中,只是基于http协议/浏览器/服务器限制,一般不会这样做
- GET在浏览器回退时是无害的,而POST会再次提交请求。GET产生一个TCP数据包;POST产生两个TCP数据包。 浏览器发送GET请求时把header和data一起发过去,服务器响应200; 浏览器发送POST请求时先发header,服务器响应100 continue,浏览器再发送data, 服务器再响应200. 但注意并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。