我是靠谱客的博主 冷艳店员,最近开发中收集的这篇文章主要介绍HTTP协议1.HTTP2.HTTP 协议格式3.HTTP请求详细解释GET 和 POST 的区别.,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
1.HTTP
HTTP (全称为 “超文本传输协议”) 是一种应用非常广泛的 应用层协议.
- HTTP 在传输层是基于 TCP 协议实现的.
- (HTTP1.0, HTTP1.1, HTTP2.0 均为TCP, HTTP3 基于 UDP 实现)
- 目前我们主要使用的还是 HTTP1.1 和 HTTP2.0 .
- 这里我们讨论的 HTTP 协议以 1.1 版本为主.
- HTTP 属于一个文本格式的协议
- (UDP/TCP/IP 这些协议属于二进制的协议)
- 我们可以借助抓包工具(Fiddler)来观察HTTP报文格式.
2.HTTP 协议格式
HTTP协议格式分为请求格式和响应格式.
2.1.HTTP请求
HTTP请求分为四个部分.
- 请求行(首行). 包含三个部分( 三个部分之间使用空格来分割 )
- HTTP的方法
- URL
- HTTP版本号
- 请求头(header). 包含很多行
- 每一行都是一个键值对
- 键和值之间使用 冒号+空格(: ) 来分割
- 空行.
- 相当于请求头的结束标记.
- 请求正文.
- 可选,不一定有.
- 虽然请求正文不一定有,但是空行一定是有的.
2.2.HTTP响应
HTTP响应也分为四个部分.
- 状态行(首行). 包含三个部分( 三个部分之间使用空格来分割 )
- HTTP版本号
- 状态码
- 状态码的描述
- 通过一个或者一组简单的单词,来描述当前状态码的含义
- 响应头(header). 也是包含很多行
- 每一行都是一个键值对
- 键和值之间使用 冒号+空格(: ) 来分割
- 空行.
- 相当于响应头的结束标记.
- 响应正文(body).
- 服务器返回给客户端的具体数据.
3.HTTP请求详细解释
3.1.URL
URL的含义就是"网络上唯一资源的地址符" URL中很多项是可以省略的.
- 协议方案名
- 登录信息
- 认证:很少在用了
- 服务器地址
- IP地址或者域名
- 服务器端口号
- 省略的情况下会有默认值:HTTP 80 HTTPS 443
- 文件路径
- 可能是真实路径,也可能是虚拟路径
- 查询字符串
- query string
- 可以有也可以没有
- 键值对之间用&分割
- 键和值用=分割
- 片段标识符
- 描述要访问当前页面具体的哪个子部分,跳到相对位置
3.1.1.URL encode/decode
- 当query string(查询字符串) 中包含特殊字符,就需要对特殊字符进行转义
- 转义过程就叫做 url encode
- 把转义以后的内容还原回来,就叫做 url decode
- 转移规则
- 把要转义的内容的ASCII值,取出来用十六进制表示,同时在前面加上%(每个字节都这样处理)
3.2.方法
认识"方法"(method)
方法 | 说明 | 支持的HTTP协议版本 |
---|---|---|
GET | 获取资源 | 1.0、1.1 |
POST | 传输实体主体 | 1.0、1.1 |
PUT | 传输文件 | 1.0、1.1 |
HEAD | 获得报文首部 | 1.0、1.1 |
DELETE | 删除文件 | 1.0、1.1 |
OPTIONS | 询问支持的方法 | 1.1 |
TRACE | 追踪路径 | 1.1 |
CONNECT | 要求用隧道协议连接代理 | 1.1 |
LINK | 建立和资源之间的联系 | 1.0 |
UNLINE | 断开连接关系 | 1.0 |
GET 和 POST 的区别.
首先. GET POST 没有本质区别.
因为现在的网络环境中使用GET的场景是可以替换成POST,使用POST的场景也可以替换成GET
但是细节上GET和POST还是有区别的.
- 语义上的区别
- GET通常是用来取数据
- POST通常用来上传数据
- 通常情况下
- GET是没有body
- GET通过query string (查询字符串) 向服务器传递数据
- POST是有body的
- POST通过body向服务器传递数据,但是POST没有 query string
- 注意这里都是通常情况, 如果想让GET有body 或者 想让 POST 带有 query string 都是完全可以的
- GET是没有body
- GET请求一般是幂等的.POST请求一般是不幂等的.(也是建议)
- 幂等:每次相同的输入得到的输出结果是确定的.
- 不幂等:每次相同的输入得到的输出结果是不确定的.
- GET是可以被缓存的.POST不能被缓存
- 能不能缓存取决于是不是幂等的.因为只有相同输入得到的结果是相同的情况,才可以被缓存.
最后
以上就是冷艳店员为你收集整理的HTTP协议1.HTTP2.HTTP 协议格式3.HTTP请求详细解释GET 和 POST 的区别.的全部内容,希望文章能够帮你解决HTTP协议1.HTTP2.HTTP 协议格式3.HTTP请求详细解释GET 和 POST 的区别.所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复