http协议简介

news2024/12/25 13:25:45

http

1.简介

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。

超文本传输协议,是我们浏览网页、看在线视频、听在线音乐等必须遵循的规则。正是在这样的规则下,浏览器(万维网客户)才能向万维网服务器发送万维网文档请求,然后服务器会将请求的文档发送回浏览器。在浏览器和服务器之间的请求和响应的交互,必须按照规定的格式和规则,这些格式和规则就构成了超文本传输协议。

计算机系统中有一个专门为HTTP开放的80端口,主要用于万维网传输信息的协议。每个万维网网点(可以是计算机)都有一个服务器进程来监听TCP的80端口,一旦发现浏览器向它发出连接建立请求,继而建立TCP连接,浏览器就向万维网服务器发出浏览某个网页的请求,服务器就接着返回所请求的页面作为响应。最后,TCP连接被释放。

需要说明的是,HTTP协议是无状态的,也就是说同一个客户第二次访问同一个服务器上面的页面时,服务器的响应与第一次访问时的相同。服务器并不知道曾经访问过此客户,更不会记得此客户曾经被服务过多少次了。但是,在实际工作中一些万维网站点还是希望能够识别用户的。比如,你在某个购物网站上将某个产品加入购物车后,希望继续浏览并选购其它商品,这时服务器就需要记住用户的身份以便所有的商品可以一起结账。

HTTP中的Cookie提供了这种功能。Cookie是这样工作的:当用户(代号为User)访问某个使用Cookie的网站时,该网站就会为User产生一个唯一的识别码并以此作为索引在服务器的后端数据库中产生一个项目。接着在给User的HTTP响应报文(关于HTTP的报文结构附录会有介绍,读者可以先看那部分内容)中添加Set-cookie的首部行。这里的"首部字段名"为"Set-cookie",后面的"值"就是赋予该用户的"识别码"。例如这个首部行为:Set-cookie:09876543。

当User收到这个响应时,其浏览器就在它管理的特定Cookie文件中添加一行,其中包括这个服务器的主机名和Set-cookie后面给出的识别码。当User继续浏览这个网站时,每发送一个HTTP请求报文,其浏览器就会从其Cookie文件中取出这个网站的识别码并放到HTTP请求报文的Cookie首部行中:Cookie:09876543。于是这个网站就能够跟踪User在这个网站的活动,也就能够实现购买的商品一起付费了。服务器和用户的交集仅仅在于这个识别码,服务器不知道User的其它任何信息。

2. http版本

HTTP/0.9
HTTP 1990 年问世。那时的 HTTP 并没有作为正式的标准被建立。
现在的 HTTP 其实含有 HTTP1.0 之前版本的意思,因此被称为
HTTP/0.9
HTTP/1.0
HTTP 正式作为标准被公布是在 1996 年的 5 月,版本被命名为
HTTP/1.0 ,并记载于 RFC1945 。虽说是初期标准,但该协议标准至今
仍被广泛使用在服务器端。
RFC1945 - Hypertext Transfer Protocol -- HTTP/1.0
http://www.ietf.org/rfc/rfc1945.txt
HTTP/1.1
14 1997 1 月公布的 HTTP/1.1 是目前主流的 HTTP 协议版本。当初的
标准是 RFC2068 ,之后发布的修订版 RFC2616 就是当前的最新版
本。
RFC2616 - Hypertext Transfer Protocol -- HTTP/1.1
http://www.ietf.org/rfc/rfc2616.txt
可见,作为 Web 文档传输协议的 HTTP ,它的版本几乎没有更新。新
一代 HTTP/2.0 正在制订中,但要达到较高的使用覆盖率,仍需假以
时日。
当年 HTTP 协议的出现主要是为了解决文本传输的难题。由于协议本
身非常简单,于是在此基础上设想了很多应用方法并投入了实际使
用。现在 HTTP 协议已经超出了 Web 这个框架的局限,被运用到了
各种场景里。
3.http状态码
在我们访问浏览器资源时我们会遇到各种的http状态码

2xx

200表示成功

 204表示该状态码代表服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分

206表示对某一段范围的请求

 

3xx

301资源已更新

302资源临时重定向

303访问的资源存在另外一个URL

 

304资源找到但是不符合条件

 

307与302同样含义,307 会遵照浏览器标准,不会从 POST 变成 GET。但是,对于处理响 应时的行为,每种浏览器有可能出现不同的情况。

 4xx

400请求报文错误

401发送的请求需要验证

 

该状态码表示发送的请求需要有通过 HTTP 认证(BASIC 认证、 DIGEST 认证)的认证信息。另外若之前已进行过 1 次请求,则表示 用 户认证失败。 返回含有 401 的响应必须包含一个适用于被请求资源的 WWWAuthenticate 首部用以质询(challenge)用户信息。当浏览器初次接收到 401 响应,会弹出认证用的对话窗口。

 

 403不允许访问

该状态码表明对请求资源的访问被服务器拒绝了。服务器端没有必要 给出拒绝的详细理由,但如果想作说明的话,可以在实体的主体部分 66对原因进行描述,这样就能让用户看到了。 未获得文件系统的访问授权,访问权限出现某些问题(从未授权的发 送源 IP 地址试图访问)等列举的情况都可能是发生 403 的原因。
404没用该资源

5xx

500内部资源出现问题

 

503服务器停机维护

 4.常见HTTP方法

 每个HTTP报文都包含一个方法 这个方法决定服务器执行什么动作

这一节我们简单介绍了http协议的一些基础信息 下一节我们就可以使用HTML语言建立起客户端和服务器的链接 并且可以使用到http协议

 参考书目

图解HTTP

Linux高性能服务器编程

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/374608.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python实现GWO智能灰狼优化算法优化循环神经网络分类模型(LSTM分类算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。1.项目背景灰狼优化算法(GWO),由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种群智能优…

【玩转c++】git的安装和使用以及可视化处理

本期主题:git的安装和使用(windows环境)博客主页:小峰同学分享小编的在Linux中学习到的知识和遇到的问题 小编的能力有限,出现错误希望大家不吝赐1.两个工具介绍第一个工具git,链接gitee或者github等代码托…

B端产品经理如何做好客户访谈?

用户访谈的价值我们在做用户研究的时候,经常会采用问卷调查和数据分析等定量的研究方法,从中我们可以搜集很多有价值的数据。但是,这些数据往往只停留在表层,没有办法基于用户的场景了解用户行为动机及诉求,很难找到用…

MySql的安装

版本选择 MySql目前使用最稳定的版本为5.7系列版本,尝鲜可以直接去官网链接整最新版本哦 本文使用8.0.32版本,注意这里看一下电脑位数,现在个人电脑一般都是64bit 点击223.6M那个压缩包开始下载,下面那个压缩包包含了测试相关内容一般是不需要的 这里有时会提示要你登录账户…

【REACT-@reduxjs/toolkit+react-redux+redux-persist状态管理】

REACT-reduxjs/toolkitreact-reduxredux-persist状态管理1. 依赖包安装2. 目录结构3. 修改Index.js4. createSlice()4.1 action处理4.1.1 创建collapsedSlice4.1.2 使用collapsedSlice4.2 异步action处理4.2.1 使用redux-thunk方式处理异步4.2.1.1 创建a…

Java+MySQL汽车租赁管理系统课程设计

wx供重浩:创享日记 对话框发送:汽车租赁系统 获取完整源码源文件视频演示文档资料等 一、 课程设计目的 1、综合运用Java程序设计课程和其他相关课程的理论和知识,掌握面向对象程序设计的一般方法、常用技术及技巧,树立良好的软件…

MongoDB安装(新版本保姆级教程)

前言MongoDB 是一个文档数据库,旨在简化开发和扩展。本篇文章介绍MongoDB 数据库及其 可视化工具 MongoDB Compass 的详细教程 (window10操作系统)下载安装包首先进入官网(社区版) ,在对应页面选择需要安装的版本 (这里下载当前适合版本号)传送门安装因为…

CRI-O, Containerd, Docker, Postman等概念介绍

参考:Docker,containerd,CRI,CRI-O,OCI,runc 分不清?看这一篇就够了Docker, containerd, CRI-O and runc之间的区别? Docker、Podman、Containerd 谁才是真正王者?CRI-O …

最简单的代码生成器,smartsofthelp netframework ,EF 架构

1.原生 sql操作公共类 dbhelper2.model 带注释的实体3.EF功能访问调用类3.EFData EF数据接口层4.UI展示层数据库脚本 自动生成Model /// <summary>/// Model实体层 /// </summary>namespace Smart.Model{/// <summary>/// 数据实体层 T_Eventsmart 投屏事件/…

CI/CD | 深入研究Jenkins后,我挖掘出了找到了摆脱低效率低下的方法

在本系列的第一篇文章中&#xff0c;您已经了解了一些关于如何管理Jenkins的内容&#xff0c;主要是为无序的人带来秩序。在这篇文章中&#xff0c;我将更深入地探讨我效率低下的问题&#xff0c;提出我们工作流中一些安全性、治理和合规性的挑战。这不仅仅是你在网站上或展览横…

从此不怕被盗号:教你如何用 Python 制作一个密码生成器

原由&#xff1a; 定期更换密码是一种非常重要的安全措施&#xff0c;这种做法可以有效地保护你的账户和个人信息不受黑客和网络攻击者的侵害。 密码泄露是一个非常普遍的问题&#xff0c;许多人的账户和密码经常会被泄露出来&#xff0c;导致个人信息被盗用、金融损失、恶意…

hive建分区表,分桶表,内部表,外部表

hive建分区表&#xff0c;分桶表&#xff0c;内部表&#xff0c;外部表 一、概念介绍 Hive是基于Hadoop的一个工具&#xff0c;用来帮助不熟悉 MapReduce的人使用SQL对存储在Hadoop中的大规模数据进行数据提取、转化、加载。Hive数据仓库工具能将结构化的数据文件映射为一张数…

Redis 如何实现库存扣减操作和防止被超卖

在日常开发中有很多地方都有类似扣减库存的操作&#xff0c;比如电商系统中的商品库存&#xff0c;抽奖系统中的奖品库存等。其基本的流程如下:1 解决方案使用mysql数据库&#xff0c;使用一个字段来存储库存&#xff0c;每次扣减库存去更新这个字段。还是使用数据库&#xff0…

自动视觉锁螺丝机及其控制系统

1.全自动智能锁螺丝机的意义电子消耗品、家用电器、汽车零件、音箱、安防、玩具、LED 等制造业的生产过程中&#xff0c;产品组装是一个非常重要的步骤&#xff0c;而螺丝锁付是组装过程的核心工艺之一。当下国内智能手机、智能汽车、智能家电等产品更新换代快&#xff0c;产品…

深入理解C#的协变和逆变及其限制原因

阅读本文需要的一些前置知识&#xff1a; C#基本语法、C#的泛型使用、C#的运行过程 由于协变和逆变存在一些细节&#xff0c;在阅读时请注意“接口”和“类型”的差异&#xff0c;此外&#xff0c;文中有可能在不同的语境中将“结构体”和“值类型”混用&#xff0c;但表达的同…

JavaEE简单实例——MyBatis一对多关联映射的嵌套结果集查询

简单介绍&#xff1a; 在之前的章节&#xff0c;我们简单介绍了MyBatis中的一对一的关联查询&#xff0c;使用了嵌套查询和嵌套结果集两种方式进行讲解&#xff0c;但是在实际的使用中&#xff0c;我们常用的是嵌套结果集的查询方式&#xff0c;所以在一对多的查询中&#xff…

无线耳机哪个品牌音质好?2023无线蓝牙耳机音质排行

现今&#xff0c;外出佩戴蓝牙耳机的人越来越多&#xff0c;各大品牌厂商对于蓝牙耳机各种性能的设计也愈发用心。那么&#xff0c;无线耳机哪个品牌音质好&#xff1f;下面&#xff0c;我来给大家推荐几款音质好的无线蓝牙耳机&#xff0c;可以当个参考。 一、南卡小音舱蓝牙…

【人工智能】科大讯飞API接口调用(第一集)

前言 这学期有一门人工智能教育课程&#xff0c;恰巧又有这么一个实践&#xff0c;要求进行人工智能接口调用 于是首选了科大讯飞&#xff0c;下面是详细过程记录 科大讯飞接口调用 以下是流程以及实现细节描述 调用流程 第一步 来到科大讯飞开放平台 http://www.xfyun.…

四、阻塞队列

文章目录基础概念生产者消费者概念JUC阻塞队列的存取方法ArrayBlockingQueueArrayBlockingQueue的基本使用生产者方法实现原理ArrayBlockingQueue的常见属性add方法实现offer方法实现offer(time,unit)方法put方法消费者方法实现原理remove方法poll方法poll(time,unit)方法take方…

wpf -绑定

事件双向驱动滑块变化&#xff0c;将值赋给文本控件与控件之间双向绑定{Binding ElementNameslider, PathValue}ElementName: 绑定哪个控件呢&#xff1f; 指绑定的x:Name这个控件Path &#xff1a; 绑定哪个属性呢&#xff1f;Value<StackPanel><Slider x:Name"…