HTTP协议的基本概念与理解!

2023-11-08

一、什么是HTTP协议

HTTP(超文本传输协议)是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。

二、状态码 

状态码类别 描述
1xx 提示信息,表示协议处理未结束
2xx 成功,服务器成功处理客户端请求
3xx 重定向,资源位置改变,客户端需重新发送请求
4xx 客户端错误,服务器无法处理
5xx 服务器端错误,服务器在处理请求时内部错误

三、http协议的版本

HTTP/1.0,发送请求,创建一次连接,获得一个web资源,连接断开

HTTP/1.1,发送请求,创建一次连接,获得多个web资源,连接断开

四、Http协议的组成

 Http协议由(Http请求+Http响应)组成,当在浏览器中输入网址访问某个网站时, 你的浏览器会将你的请求封装成一个Http请求发送给服务器站点,服务器接收到请  求后会组织响应数据封装成一个Http响应返回给浏览器。即没有请求就没有响应。

http请求包括:请求行、请求头、请求体

http响应包括:响应行、响应头、响应体 

(1)HTTP请求报文

 HTTP请求报文由3部分组成(请求行+请求头+请求体)

(2)HTTP响应报文

HTTP的响应报文也由三部分组成(响应行+响应头+响应体)

五、HTTP请求方法

HTTP协议中共定义了八种方法(也叫“动作”)来以不同方式操作指定的资源:

(1)GET

向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在Web Application中。其中一个原因是GET可能会被网络蜘蛛等随意访问。

(2)HEAD

GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。

(3)POST

指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。

(4)PUT

指定资源位置上传其最新内容

(5)DELETE

请求服务器删除Request-URI所标识的资源。

(6)TRACE

回显服务器收到的请求,主要用于测试或诊断。

(7)OPTIONS

这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用’*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。

(8)CONNECT

HTTP协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器)。

注意事项

  1. 方法名称是区分大小写的。当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Method Not Allowed),当服务器不认识或者不支持对应的请求方法的时候,应当返回状态码501(Not Implemented)。
  2. HTTP服务器至少应该实现GET和HEAD方法,其他方法都是可选的。当然,所有的方法支持的实现都应当匹配下述的方法各自的语义定义。此外,除了上述方法,特定的HTTP服务器还能够扩展自定义的方法。例如PATCH(由 RFC 5789 指定的方法)用于将局部修改应用到资源。

六、GET与POST区别 

  1. GET方法提交的数据通过URL传递,而POST方法提交的数据通过HTTP请求的消息体进行传递。

  2. GET方法提交的数据长度有限制,由URL长度限制;而POST方法提交的数据长度没有限制。

  3. GET方法提交的数据可以被缓存,而POST方法不行。

  4. GET方法提交的数据可以被收藏为书签,而POST方法不行。

  5. GET方法提交的数据安全性较低,因为数据在URL中明文传输;而POST方法提交的数据相对安全,因为数据在请求体中加密传输。

  6. GET方法用于获取数据,对服务器没有影响;而POST方法用于提交数据,对服务器会产生影响。

七、Http的优缺点

(1)优点

  1. 简单易用:HTTP设计简单,容易理解和使用,几乎支持所有的操作系统和浏览器。
  2. 兼容性好:HTTP是基于TCP/IP协议的,可以实现跨平台传输,保证了不同操作系统和应用程序之间的兼容性。
  3. 易于扩展:HTTP可以很容易地通过添加新的请求方法、报文头部、状态码等来扩展其功能。
  4. 可缓存性:HTTP支持缓存机制,可以提高数据传输的速度,降低网络带宽的消耗。
  5. 安全性较高:HTTP可以使用SSL/TLS等协议进行加密传输,保证了数据的安全性。

(2)缺点

  1. 传输速度较慢:HTTP使用明文传输,每个请求和响应都需要进行完整的通信过程,而且请求和响应的报文头信息也很多,因此传输速度相对较慢。
  2. 安全性有限:HTTP的安全性相对较差,因为它的通信数据是明文传输的,容易被拦截和窃取。
  3. 可靠性不高:HTTP没有任何机制来处理数据的丢失和重复,也无法保证数据传输的顺序和可靠性。
  4. 只能处理单向请求:HTTP只能处理客户端向服务器的单向请求,而无法实现服务器向客户端的主动推送。
  5. 没有事务支持:HTTP不支持事务机制,无法对执行的多个请求进行原子性操作。

八、HTTP与HTTPS的区别 *

  • HTTP是超文本传输协议,信息是明文传输,存在安全隐患。HTTPS解决了 HTTP的安全隐患,同时在TCP和HTTP网络层之间加入了SSL/TLS安全协议,使得报文加密传输。
  • HTTP通过TCP三次握手进行报文传输,HTTPS在三次握手之后加入SSL/TLS握手,才可进行加密报文传输。
  • HTTP端口号是80,HTTPS端口号是443。
  • HTTPS需要向CA(证书权威机构)申请数字证书,以保证服务器身份可信。
  • 由于HTTPS需要加密和解密数据,传输速度会比HTTP慢一些。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTP协议的基本概念与理解! 的相关文章

  • 发送压缩文件 Spring

    我想通过我的 spring 控制器发送一个已经存在的压缩文件 但我不断收到这些错误消息org springframework web HttpMediaTypeNotAcceptableException Could not find ac
  • Java HttpURLConnection:内容长度计算

    我目前正在为 bitbucket issues RESTful API 开发一个库 我取得了很大的进步 现在我要解决这个部分更新问题 http confluence atlassian com display BBDEV Issues Is
  • 是否可以阻止在每个 HTTP 请求中发送 cookie?

    我最近发现 这里 每个网络请求都会发送浏览器cookie吗 https stackoverflow com questions 1336126 does every web request send the browser cookies
  • .htaccess 路由到服务器上的子目录?性能/加载时间

    我想知道是否可以使用 htaccess 文件将我的域直接路由到服务器上的子目录 我从常规虚拟主机提供商处购买了虚拟主机软件包 其中我的domain com 连接到我的服务器的根目录 我想知道是否可以以某种方式将 htaccess 文件上传到
  • 身份验证中的随机数使用

    在基于摘要的身份验证中 随机数由服务器生成 然而 在基于 OAuth 的身份验证中 随机数是由客户端生成的 我想知道是否有人知道差异的原因 随机数用于使请求唯一 在没有随机数的身份验证方案中 恶意客户端可以生成一次请求并重放多次 即使计算成
  • 在Java中解析包含multipart/form-data请求体的字符串

    问题陈述 我认为标题说明了一切 我正在寻找解析 a 的方法String包含 multipart form data HTTP 请求的正文部分 IE 字符串的内容看起来像这样 xyzseparator blah Content Disposi
  • 在 Heroku 上获取客户端的真实 IP 地址

    在任何 Heroku 堆栈上 我想获取客户端的 IP 我的第一次尝试可能是 request headers REMOTE ADDR 当然 这是行不通的 因为所有请求都是通过代理传递的 所以替代方法是使用 request headers X
  • 您可以从 AuthorizeAttribute 返回 HTTP 响应而不引发异常吗?

    我在各种控制器上使用 AuthorizeAttribute 可能需要根据请求本身的某些属性返回 403 或 429 请求过多 我完全在自定义 OnAuthorization 实现中实现了它 然后在必要时抛出一个带有适当响应代码的新 Http
  • Chrome 在传输一定量的数据后挂起 - 等待可用的套接字

    我有一个浏览器游戏 最近我开始向游戏添加音频 Chrome 无法加载整个页面并卡在 91 requests 8 1 MB transferred 并且不再加载任何内容 它甚至破坏了所有其他选项卡中的网站 说Waiting for avail
  • 外部依赖错误的 HTTP 状态代码

    当服务器与外部 API 通信出现问题时 返回的正确 HTTP 状态代码是什么 假设客户端向我的服务器 A 发送有效请求 然后 A 查询服务器 B 的 API 以便执行某些操作 然而 B 的 API 当前抛出 500 错误或因某种原因无法访问
  • 在处理程序之后访问 HTTP 请求上下文

    在我的日志记录中间件 链中的第一个 中 我需要访问一些在链下游的某些身份验证中间件中编写的上下文 并且仅在处理程序本身执行之后 旁注 需要首先调用日志记录中间件 因为我需要记录请求的持续时间 包括在中间件中花费的时间 此外 当权限不足时 身
  • 是否可以修改 $_SESSION 变量?

    恶意用户是否可以将 SESSION 在 php 中 变量设置为他想要的任何值 很大程度上取决于您的代码 有一点非常明显 SESSION username REQUEST username
  • 由于浏览器设置的标头,Safari 拒绝重定向的 CORS 请求

    Summary Safari 拒绝一些涉及重定向的 CORS 请求 声称某些标头是不允许的 但该标头从来不是由脚本请求的 而是由浏览器添加的 所以我认为这应该不重要 Safari 的行为是一个错误吗 规格有问题吗 或者 事情变成这样是有原因
  • 返回重定向作为对 Ajax(fetch、XHR 等)请求的响应

    如果浏览器收到对 ajax 请求的重定向响应 会发生什么 如果浏览器收到对 ajax 请求的重定向响应 会发生什么 如果服务器发送重定向 又名 302 响应加上 Location 标头 浏览器将自动遵循重定向 对此的回应second请求 假
  • Django 响应总是用 text/html 分块无法设置内容长度

    在我的Django应用程序的views py中 我在尝试设置以下HTTP标头字段后返回一个HttpResponse对象 Create a Response Object with the content to return response
  • 从 HTTP 登录到 HTTPS

    我的网站默认使用 HTTP 我确实有一个启用 HTTPS 的证书 但只有其上的某些区域强制建立安全连接 登录是通过 Ajax 处理的 我想开始使用 SSL 即使请求来自 HTTP 我尝试强制请求的地址具有 HTTPS 并且它完美地回复 然而
  • 网站(Google 和/或您)应如何处理 Accept-Language 标头?

    很长一段时间以来 我对谷歌在以下情况下的行为并不满意 并且在无意中注意到之后80 其他人 https stackoverflow com questions 1011167 what are common ui misconceptions
  • 从 R 中的 HTTPS 连接逐行读取

    当创建连接时open r 它允许逐行读取 这对于批量处理大数据流非常有用 例如这个脚本 https gist github com jeroenooms d33a24958d99bb969ac0通过一次读取 100 行来解析相当大的 gzi
  • 是否可以使用 PHP 重定向发送 POST 数据?

    更新 这不是重复的如何使用 PHP 发送 POST 请求 https stackoverflow com questions 5647461 how do i send a post request with php 那里的解决方案对我不起
  • 如何使用 Netty 连接到运行 HTTP 服务器的 UNIX 域套接字?

    我正在尝试使用 Netty 连接到 Docker UNIX 域套接字 到目前为止 这是我的尝试 PostConstruct public void init throws Exception io netty bootstrap Boots

随机推荐

  • Linux学习-08-Linux目录常用操作命令2

    3 12 Linux cp命令 复制文件和目录 cp 命令 主要用来复制文件和目录 同时借助某些选项 还可以实现复制整个目录 以及比对两文件的新旧而予以升级等功能 cp 命令的基本格式如下 root CncLucZK cp 选项 源文件 目
  • IP地址、子网掩码、网关、DNS和端口(port)之间的关系

    1 IP地址 IP地址是32位 分为网络号和主机号 所谓IP地址就是给每个连接在Internet上的主机分配的一个32bit地址 并且每台机器的 IP 在全世界是唯一的 按照TCP IP协议规定 IP地址用二进制来表示 每个IP地址长32b
  • MySQL——错误ERROR :没有选择数据库就操作表格和数据

    ERROR 1046 3D000 No database selected 解决方案一 就是使用 USE 数据库名 语句 这样接下来的语句就默认针对这个数据库进行操作 解决方案二 就是所有的表对象前面都加上 数据库
  • python 爬取中国木材价格指数网

    python 爬取中国木材价格指数网 完整代码 https github com tanjunchen SpiderProject tree master yuzhuprice usr bin env python coding utf 8
  • 分布式事务方案整理

    分布式系统有一个著名的CAP理论 即一个分布式系统要同时满足一致性 Consistency 可用性 Availablility 和分区容错 Partition Tolerance 三个特性是一件不可能的事情 CAP理论告诉架构师不要妄想设计
  • python笔记记录神器 jupyter notebook

    之前因为没有用到这款python工具 所以一直没有在号内给大家介绍 实则大部分python开发者已经在使用了 最喜欢它的地方是可以同时支持markdown和ipython的脚本脚本 那就意味着我可以一遍调试我的代码一遍加上每一部分的层级标题
  • RPA如何拓展更多实体应用场景,进一步精益流程管理?

    RPA作为一种灵活 高效 成本可控的数字化转型方式 已成为近年来关注度最高的技术趋势之一 作为企业转型的催化剂 以RPA为代表的 数字员工 通过预先构建的 智能的 高生产率的 自组织的 多任务资源等方式 能够独特地使用和访问与人类相同的IT
  • 存储结构分四类:顺序存储、链接存储、索引存储 和 散列存储

    转载 http www cnblogs com fengty90 p 3768826 html 存储结构分四类 顺序存储 链接存储 索引存储 和 散列存储 顺序结构和链接结构适用在内存结构中 顺序表每个单元都是按物理顺序排列的 如果你想访问
  • Halcon清晰度检测实例(转)

    Halcon清晰度检测实例 转 2013 10 08 14 11 07 分类 halcon 举报 字号 订阅 下载LOFTER 我的照片书 此实例通过使用Halcon实现5种清晰度算法函数 1 方差算法函数 2 拉普拉斯能量函数 3 能量梯
  • kubernetes 容器获取宿主机IP

    容器如何获取到所运行的kubernetes节点IP env name HOST NODE NAME valueFrom fieldRef apiVersion v1 fieldPath spec nodeName name HOST NOD
  • 初次在idea运行ssm框架项目

    JDK 8 Tomcat 8 Maven 最新的 配环境变量 Git IDEA 安装 陪环境 编码 UTF 8 快捷方式 把自己安装的JDK Tomcat Maven git配置到IDEA中 自己下一些插件 从GitHub上倒入项目 Mav
  • 概率论与数理统计——方差分析

    文章目录 单因素试验的方差分析 单因素试验 双因素试验的方差分析 方差分析是数理统计中应用很广泛的内容 主要看两个 单因素试验的方差分析 双因素试验的方差分析 在这之前先了解几个概念 方差分析 根据试验的结果进行分析 鉴别各个有关因素对试验
  • ERP财务基础学习

    总账的账套包括会计期间 会计科目和本位币的定义 会计期间 Accounting Period Fiscal Period 又称会计分期 是指将企业川流不息的经营活动划分为若干个相等的区间 在连续反映的基础上 分期进行会计核算和编制会计报表
  • Linux定时任务-定时执行Shell脚本

    主要是使用Linux的crontab工具来实现的 有两个方法 一个放在contab 列表里面 另一个是放在contab文件里面 其实原理是一致的 crontab 列表 cd tmp 创建一个shell脚本 vim hello sh bin
  • ABAP动态编程-动态调用子例程&方法及动态SQL

    目录 前言 一 动态调用 1 1 FORM子例程的动态调用 1 2 ABAP方法动态调用 二 动态SQL 2 1 动态OPEN SQL语句 2 2 使用ADBC类执行SQL 总结 前言 本文主要讲述ABAP语言中FORM子例程 方法的动态调
  • element-ui 多选框和级联选择的部分bug以及解决方法

    前言 最近在开发一款使用了 element ui 的低代码设计器 在开发的过程当中碰到了一些关于 element ui 组件本身不合理的地方 并且在百度的基础上自己去阅读了一下 element ui 的源码 也找出了这些问题的一个解决方案
  • EDA虚拟机安装 plus

    EDA虚拟机安装 plus 申明 此工具为学生或者初学者学习只用 严谨用于商业用途 请支持知识产权 购买正版EDA工具 之前刚安装了一个虚拟机 详见 EDA大礼包 本想将之前的开源NanGate 45nmPDK用于后端实现 但找到的库全部基
  • R中Matrix and TMB package version issues

    在Rstudio中常遇到Matrix and TMB包版本的问题 或者是其他类似的问题 Warning message In checkMatrixPackageVersion Package version inconsistency d
  • SSM项目-在线考试系统的Java毕业设计(附论文+源码)

    大家好 我是职场程序猿 感谢您阅读本文 欢迎一键三连哦 当前专栏 Java毕业设计 精彩专栏推荐 安卓app毕业设计 微信小程序毕业设计 演示视频 ssm061在线考试系统 源码下载地址 https download csdn net do
  • HTTP协议的基本概念与理解!

    一 什么是HTTP协议 HTTP 超文本传输协议 是一个基于请求与响应 无状态的 应用层的协议 常基于TCP IP协议传输数据 互联网上应用最为广泛的一种网络协议 所有的WWW文件都必须遵守这个标准 设计HTTP的初衷是为了提供一种发布和接