我是靠谱客的博主 冷艳店员,最近开发中收集的这篇文章主要介绍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请求分为四个部分.

在这里插入图片描述

  1. 请求行(首行). 包含三个部分( 三个部分之间使用空格来分割 )
    1. HTTP的方法
    2. URL
    3. HTTP版本号
  2. 请求头(header). 包含很多行
    • 每一行都是一个键值对
    • 键和值之间使用 冒号+空格(: ) 来分割
  3. 空行.
    • 相当于请求头的结束标记.
  4. 请求正文.
    • 可选,不一定有.
    • 虽然请求正文不一定有,但是空行一定是有的.

2.2.HTTP响应

HTTP响应也分为四个部分.

在这里插入图片描述

  1. 状态行(首行). 包含三个部分( 三个部分之间使用空格来分割 )
    1. HTTP版本号
    2. 状态码
    3. 状态码的描述
      • 通过一个或者一组简单的单词,来描述当前状态码的含义
  2. 响应头(header). 也是包含很多行
    • 每一行都是一个键值对
    • 键和值之间使用 冒号+空格(: ) 来分割
  3. 空行.
    • 相当于响应头的结束标记.
  4. 响应正文(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还是有区别的.

  1. 语义上的区别
    • GET通常是用来取数据
    • POST通常用来上传数据
  2. 通常情况下
    • GET是没有body
      • GET通过query string (查询字符串) 向服务器传递数据
    • POST是有body的
      • POST通过body向服务器传递数据,但是POST没有 query string
    • 注意这里都是通常情况, 如果想让GET有body 或者 想让 POST 带有 query string 都是完全可以的
  3. GET请求一般是幂等的.POST请求一般是不幂等的.(也是建议)
    • 幂等:每次相同的输入得到的输出结果是确定的.
    • 不幂等:每次相同的输入得到的输出结果是不确定的.
  4. GET是可以被缓存的.POST不能被缓存
    • 能不能缓存取决于是不是幂等的.因为只有相同输入得到的结果是相同的情况,才可以被缓存.

最后

以上就是冷艳店员为你收集整理的HTTP协议1.HTTP2.HTTP 协议格式3.HTTP请求详细解释GET 和 POST 的区别.的全部内容,希望文章能够帮你解决HTTP协议1.HTTP2.HTTP 协议格式3.HTTP请求详细解释GET 和 POST 的区别.所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部