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协议的基本概念与理解! 的相关文章

  • 为什么我在将数据上传到数据库时不断看到“正在重置断开的连接”?

    我正在通过 REST API 将数亿个项目从 Heroku 上的云服务器上传到 AWS EC2 中的数据库 我正在使用 Python 并且经常在日志中看到以下 INFO 日志消息 requests packages urllib3 conn
  • 使用 Java 通过 HTTP 下载未知长度的文件

    我想用java下载一个HTTP查询 但是我下载的文件在下载时有一个未确定的长度 我认为这将是相当标准的 所以我搜索并找到了它的代码片段 http snipplr com view 33805 http snipplr com view 33
  • 不加载隐藏图像

    我的网站上有一堆隐藏图像 它们的容器 DIV 具有 style display none 根据用户的操作 某些图像可能会通过 JavaScript 显示 问题是我的所有图像都是在打开页面时加载的 我想通过仅加载最终可见的图像来减轻服务器的压
  • Rails api 中阻止用户配置文件的最佳 HTTP 状态代码是什么?

    我在 Rails 中为社交应用程序编写了一个 API 这个应用程序就像Facebook一样 用户可以阻止其他用户 如果用户 A 阻止用户 B 则用户 B 无法查看用户 A 的个人资料页面 那么我应该返回的最佳 HTTP 代码状态是什么 40
  • Flex HTTPservice 和 POST,发送文件?

    我使用基本的 Post 将数据发送到 Django 服务器 数据由flex动态创建的base64编码的640 380 PNG图像组成 成分
  • 角度报告进度返回上传的文件总数,而不是进度

    在我的组件中我有这个 this authService addPost post subscribe data gt if data type HttpEventType UploadProgress console log data el
  • 如何在 G-WAN 中添加 HTTP/2

    我想知道是否可以通过使用解决方案 nghttp2 https nghttp2 org https nghttp2 org 很抱歉这么晚才回答 出于某种原因 Stackoverflow 没有通知我们这个问题 我之所以找到它只是因为收到了更新的
  • AngularJS 1.X 中的异步调用是如何工作的? $Http 调用没有返回值

    我有以下名为的函数getvalue 它与控制器一起位于 AngularJS 模块内 我试图在单击事件上调用此函数 调用控制器中的另一个函数 我希望我很清楚 功能 function getvalue Data http var value u
  • Android 套接字和 HTTP 响应标头

    有趣的是 我可能无意中找到了解决方案是否可以使用普通套接字连接发送 HTTP 请求并接收没有标头的响应 https stackoverflow com questions 8320574 我希望我忽略了一些东西 无论如何 我正在连接到 We
  • Node.js 上的 Connect 出现“无法 GET /”

    我正在尝试使用以下方式开始提供一些静态网页connect像这样 var connect require connect var nowjs require now var io require socket io var app conne
  • Java 中的下载管理器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要通过 FTP HTTP 从 Java 获取几个大文件 几个演出 有现成的库 java 命令行工具
  • 使用 HTTP-Basic 身份验证发出 HTTP GET 请求

    我需要为我正在开发的 Flash Player 项目构建一个代理 我只需要使用 HTTP Basic 身份验证向另一个 URL 发出 HTTP GET 请求 并提供来自 PHP 的响应 就好像 PHP 文件是原始源一样 我怎样才能做到这一点
  • 如何在 Android 上的 HttpPost 中发送 unicode 字符

    我试图在我的应用程序中允许多语言支持 这会发出 HTTP post 来上传新消息 我需要做什么才能支持日语和其他非拉丁语语言 我的代码目前看起来像这样 note the msg string is a JSON message by the
  • PUT/DELETE 与 REST 是自动幂等的吗?

    我正在学习 REST 和 PUT DELETE 我读到这两者 以及 GET 都是幂等的 这意味着多个请求使服务器进入相同的状态 重复的 PUT DELETE 请求是否会离开 Web 浏览器 当使用XMLHttpRequest 换句话说 服务
  • 如何在PHP中完成http响应并进行进一步处理?

    就我而言 我需要向客户端回显一个标志并发送一封电子邮件 现在客户端需要等待电子邮件发送 但我想把这两个步骤分开 该怎么做呢 你可以看一下异步运行 PHP 任务 https stackoverflow com questions 858883
  • Google Closure 编译器和 multipart/form-data 不起作用

    我正在向 google 闭包编译器 API 服务发出请求 content file get contents file js url http closure compiler appspot com compile post true p
  • Poco c++Net:Http 从响应中获取标头

    我使用 POCO C Net 库进行 http 我想尝试制定持久缓存策略 首先 我认为我需要从缓存标头中获取过期时间 并与缓存值进行交叉检查 如果我错了 请告诉我 那么我如何从中提取缓存头httpResponse 我已经看到你可以用 Jav
  • 当响应有正文时,内容长度或传输编码是必需的吗

    如果响应有正文 可以有正文 即状态代码不是 204 或 304 则响应标头中是否应始终具有内容长度或传输编码 在规范中 它不是很清楚 在我的场景中 我的主体没有内容长度或传输编码标头 因此卷曲继续等待no chunk no close no
  • 如何在 Varnish 中禁用“传输编码:分块”编码?

    Using 清漆4 https www varnish cache org content varnish cache 400 我有一组后端以有效的方式响应Content Length标题和没有Transfer Encoding heade
  • Tomcat 7 停止接收 HTTP 请求

    我有一个Tomcat 7接收大量数据的服务器GET 要求 这种方法在一段时间内效果很好 然后突然停止工作 7 8 小时后 当它停止工作时 我收到此错误 五月 06 2015 12 47 58 AM org apache coyote htt

随机推荐

  • 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的初衷是为了提供一种发布和接