HTTP协议

HTTP协议专门用于定义浏览器与服务器之间交互数据的过程以及数据本身的格式

HTTP概述

HTTP是一种客户端(用户)请求和服务器(网站)应答的标准,它作为一种应用层协议,应用于分布式、协作式和超媒体信息系统。它作为一种请求/响应式的协议,客户端在与服务器建立连接后,就可以向服务器发送请求,这种请求被称为HTTP请求,服务器接收到请求后会做出响应,被称为HTTP响应

 

HTTP协议的特点:

  1. 支持客户端(浏览器就是一种Web客户端)/服务器模式
  2. 简单快速。客户端向服务器请求服务时,只需传送请求方式和路径。常用的请求方式有GET、POST等,不同的请求方式规定的客户端和服务器联系的类型也不同。HTTP比较简单,使得HTTP服务器的程序规模小,通信速度快
  3. 灵活。HTTP允许传输任意类型的数据,正在传输的数据类型由Content-Type加以标记
  4. 无状态。HTTP时无状态协议。无状态是指协议对于事务处理没有记忆能力,如果后续处理需要前面的信息,则必须重新传输,因此这样可能会导致每次连接传送的数据量增大

HTTP1.0和HTTP1.1

基于HTTP1.0协议的客户端与服务器在交互过程中,每次发送请求信息都需要重新建立连接(建立TCP连接、发送HTTP请求、回送HTTP响应和关闭TCP连接),即客户端与服务器建立连接后,每次只能处理一个HTTP请求

基于HTTP1.1协议的客户端与服务器支持持久连接,即在一个TCP连接上可以传送多个HTTP请求和响应并且在发送下次请求时,无需等待上次请求的返回结果,服务器会根据客户端发送请求的先后顺序一次返回响应结果

HTTP1.1不仅继承了HTTP1.0的优点,而且有效解决了HTTP1.0的性能问题,显著减少了浏览器与服务器交互所需要的时间

HTTP消息

当用户在浏览器中访问某个URL地址、单击网页的某个超链接或者提交网页上的form表单时,浏览器都会向服务器发送请求数据,即HTTP请求消息

服务器收到请求数后,会将处理后的数据发送给客户端,即HTTP响应消息

HTTP请求消息和HTTP响应消息统称为HTTP消息

在HTTP消息中,除了服务器的响应实体内容(例如HTML网页、图片等)外,其他消息对用户都是不可见的,例如请求方式、HTTP协议版本号、请求头和响应头等。观察这些“隐藏”信息,可利用浏览的网络查看工具(Network)

1、HTTP请求消息

在HTTP中,一个完整的请求消息由请求行请求头实体内容3个部分组成,每个部分都有不同的功能

实体内容(数据体)可以被认为是附加在请求之后的文本或二进制文件,只有请求方式为post的时候,实体内容才会有数据(即请求参数)

1.1 HTTP请求行

HTTP请求行位于请求消息第一行,它包括三个部分,分别是请求方式、资源路径和HTTP版本

实例:

GET /index.html HTTP/1.1

1.2 HTTP请求头

在HTTP请求消息中,请求行之后便是若干请求头。请求头主要是用来向服务器传递附加消息,例如客户端可以接收的数据类型、压缩方式、语言以及发送请求的超链接所属页面的URL地址等信息

请求头由头字段名称和值组成,头字段名称和值之间用冒号和空格分隔(头字段名称不区分大小写,但习惯上将单词的第一个字母大写 )

常见的头字段说明
Accept指出客户端能够处理的MIME类型
Accept-Charset告知服务器客户端所使用的的字符集
Accept-Encoding指定客户端能够进行解码的数据编码方式(通常指某种压缩方式)
Accept-Language指定客户端期望服务器返回哪个国家语言的文档
Authorization当客户端访问受口令保护的网页时,Web服务器会发送401响应状态码和WWW-Authenticate响应头,要求客户端使用Authorization请求头来响应
Proxy-Authorization作用于用法与Authorization头字段基本相同,该请求头是服务器向代理服务器发送的验证信息
Host指定资源所在的主机名和端口号
If-Match当客户端再次向服务器请求这个网页文件时,可以使用If-Match附带以前缓存的实体标签内容,这个请求被视为一个条件请求
If-Modified-Since作用与If-Match类似,只不过它的值为GMT格式的时间
Range指定服务器只需返回文档中的部分内容及内容范围,这对较大文档的断点续传非常有用
If-Range只能伴随Range头字段一起使用,其值可以是实体标签或GMT格式的时间
Max-Forward指定当前请求可以途径的代理服务器数量,每经过一个代理服务器,此数值-1
Referer常被网站管理人员用来追踪网站的访问者时如何导航进入网站的,同时还可以用于网站的防盗链
User-Agent指定浏览器或者其他客户端程序使用的操作系统及版本、浏览器及版本、浏览器渲染引擎、浏览器语言等,以便服务器针对不同类型的浏览器而返回不同的内容

2、HTTP响应消息

当服务器收到浏览器的请求后,会发送请求消息给客户端。一个完整的响应消息主要包括响应状态行响应头实体内容,每个组成部分都代表了不同的含义

2.1 HTTP响应状态行

HTTP响应状态行位于响应消息的第一行,它包括三个部分,分别是HTTP版本、一个表示成功或者失败的状态码和对状态码进行描述的文本信息

示例:

HTTP/1.1 200 OK

状态码由三位数字组成,表示请求是否被理解或满足,第一位数字定义了响应的类型

1xx:表示请求已接收,需要继续处理

2xx:表示请求已成功被服务器接收、理解并接受

3xx:为完成请求,客户端需进一步细化请求

4xx:客户端的请求有错误

5xx:服务器出现错误

Web开发中的常见状态码
状态码说明
200表示服务器成功处理了客户端的请求。客户端的请求成功,响应消息返回正常的请求结果
302表示请求的资源临时从不同的URL响应请求,但请求者应继续使用原有位置来进行以后的请求。例如,在请求重定向中,临时URL应该是响应的Location头字段所指向的资源
304如果客户端有缓存的文档,它会在发送的请求消息中附加一个 If-Modified-Since 请求头,表示只有请求的文档在If-Modified-Since指定的时间之后发生过更改,服务器才需要返回新文档。状态码304表示客户端缓存的版本是最新的,客户端应该继续使用它。否则,服务器将使用状态码 200 返回所请求的文档
404表示服务器找不到请求的资源。例如,访问服务器不存在的网页经常返回此状态码
500表示服务器发生错误,无法处理客户端的请求。大部分情况下,是服务器的程序发生了错误,一般会提供具体的错误信息

2.2 HTTP响应头

在HTTP响应消息中,第一行为响应状态行,紧接着便是若干响应头,服务器通过响应头向客户端传递附加信息,包括服务程序名、被请求资源需要的认证方式、客户端请求资源的最后修改时间、重定向地址等信息

常见的响应头字段说明
Accept-Ranges用于标识服务器自身支持范围请求,该头字段的具体值用于定义范围请求的单位,单位值可以为none或bytes
Age用于指出当前网页文档可以在客户端或代理服务器中缓存的有效时间,设置值为一个以秒为单位的时间数
ETag用于向客户端传送代表实体内容特征的标记信息,这些标记信息称为实体标签,每个版本的资源的实体标签是不同的,通过实体标签可以判断在不同时间获得的同一资源路径下的实体内容是否相同
Location用于通知客户端获取请求文档的新地址,其值为一个使用绝对路径的URL 地址
Retry-After可以与503状态码配合使用,告诉客户端在什么时间可以重新发送请求。也可以与任何一个3xx状态码配合使用,告诉客户端处理重定向的最小延时时间。Retry-After 头字段的值可以是 GMT格式的时间,也可是一个以秒为单位的时间数
Server用于指定服务器软件产品的名称
Vary用于指定影响了服务器所生成的响应内容的那些请求头字段名
WWW-Authenticate当客户端访方问受口令保护的网页文件时,服务器会在响应消息中回送01(Unauthorized)响应状态码和WWW-Authenticate 响应头,指示客户端应该在Authenticate 请求头中使用WWW-Authenticate 响应头指定的认证方式提供用户名和密码信息
Proxy-AuthenticateProxy-Authenticate 头字段用于代理服务器的用户信息验证,用法与WWW-Authenticate 头字段类似
Refresh用于告诉浏览器自动刷新页面的时间,它的值是一个以秒为单位的时间数
Content-Disposition如果服务器希望浏览器不是直接处理响应的实体内容,而是让用户选择将响应的实体内容保存到一个文件中,就需要使用Content-Disposition 头字段

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FTP服务器

文章目录 FTP服务器FTP的数据传输原理FTP的功能简介不同等级的用户身份命令记录与日志文件记录限制用户活动的目录 FTP的工作流程与使用到的端口FTP主动式连接FTP被动式连接 vsftpd服务器基础设置为什么使用vsftpd所需要的软件以及软件结构vsftpd.conf 配置值说明与服务器环境比…

Spring Data JPA 报 HOUR_OF_DAY: 0 -> 1异常的解决过程和方案

在进行数据查询时,控制台报了Caused by: com.mysql.cj.exceptions.WrongArgumentException: HOUR_OF_DAY: 0 -> 1异常,查询得知:这是由于查mysql库,转换类型为datetime类型的字段引起的。 网上的解决方案有多种,大…

SIGGRAPH 2023|你的AI Tony老师上线了,英伟达提出毛发模拟新基线

2018年,网易《逆水寒》与AMD合作开发出来一款名为“海飞丝”的算法,该算法基于AMD的TressFX毛发模拟技术,可以在游戏中较为清晰的模拟人类头发的运动,大大增强了游戏场景的真实感。一个健康的成年人大概拥有10万根头发&#xff0c…

thinkphp 反序列化漏洞

文章目录 配置xdebug反序列化漏洞利用链详细分析poc1(任意文件删除)poc2(任意命令执行) 补充代码 配置xdebug php.ini [Xdebug] zend_extensionD:/phpstudy_pro/Extensions/php/php7.3.4nts/ext/php_xdebug.dll xdebug.modedebu…

机器学习之K-means聚类算法

目录 K-means聚类算法 算法流程 优点 缺点 随机点聚类 人脸聚类 旋转物体聚类 K-means聚类算法 K-means聚类算法是一种无监督的学习方法,通过对样本数据进行分组来发现数据内在的结构。K-means的基本思想是将n个实例分成k个簇,使得同一簇内数据相…

井盖异动监测传感器:井盖的安全守护者

随着城市化进程的不断加速,城市道路、人行道上的井盖扮演着重要的角色。然而,由于各种因素,如车辆冲击、材料老化等,井盖常常会出现异动情况,井盖异动不仅对行车和行人的安全构成威胁,还给城市基础设施的维…

机器学习之PCA算法

目录 PCA算法 PCA目标 PCA原理推导 基于最大可分性推导 基于最近重构误差推导 PCA算法流程 PCA优点 PCA缺点 基于PCA的人脸识别 PCA算法 PCA,即主成分分析(Principal Component Analysis),是一种常用的降维技术&#x…

0-1BFS 双端队列 广度优先搜索

一. BFS及0-1BFS的简单介绍 深度优先搜索DFS和广度优先搜索BFS是经常使用的搜索算法,在各类题目中都有广泛的应用。 深度优先搜索算法(英语:Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法。其过程简要来说…

【DBA专属】mysql-------->>>MMM高可用集群架构

Mysql---MMM高可用集群架构 目录 MMM安装部署 环境配置:(所有主机配置) 1、主机信息 2、关闭防火墙 3、同步时区 4、配置主机解析文件 5、配置ssh免密登录 6、所有机器安装epel源 数据库配置: 【所有数据库均做的配置】…

【探索 Kubernetes|作业管理篇 系列 9】Pod 的服务对象

前言 大家好,我是秋意零。 在上一篇中,我们介绍了 Pod 的生命周期以及区分 Pod 字段的层次级别,相信你对此有了充分的认识。 今天,我们还会接着以 Pod 展开,说说它的 “服务对象”,一听就知道是对 Pod 提…

Vuforia专题:设置AR摄像头自动对焦

Vuforia专题:设置AR摄像头自动对焦 一,前言 在之前使用的时候,如果没有设置自动对焦可以发现,摄像头画面极其模糊。并导致识别的结果不是很理想 加上自动对焦后的效果如下: 二、具体步骤 1、ARCamera添加脚本Cam…

嵌入式中C++开发的基本操作方法

第一:面向对象 1、配置环境 虚拟机上网(ping www.baidu.com)sudo apt-get update //更新软件包sudo apt-get install -f //更新软件依赖sudo apt-get install g //安装c编译器 2、C发展 c98,第一版 c03,c11,c17 3、为什么学习C 4、面向对…