宜州网站建设,青岛做网站电话,网站建设方案有哪几种,信誉好的邢台做网站#x1f389;博主首页#xff1a; 有趣的中国人 #x1f389;专栏首页#xff1a; Linux网络 #x1f389;其它专栏#xff1a; C初阶 | C进阶 | 初阶数据结构 小伙伴们大家好#xff0c;本片文章将会讲解 应用层协议HTTP 的相关内容。 如果看到最后您觉得这篇文章写得… 博主首页 有趣的中国人 专栏首页 Linux网络 其它专栏 C初阶 | C进阶 | 初阶数据结构 小伙伴们大家好本片文章将会讲解 应用层协议HTTP 的相关内容。 如果看到最后您觉得这篇文章写得不错有所收获麻烦点赞、收藏、留下评论。您的支持是我最大的动力让我们一起努力共同成长 文章目录 1. HTTP协议简介2. 认识 URL3. HTTP 报文格式font color blueb3.1 HTTP REQUEST 格式font color blueb3.2 HTTP RESPONSE格式 4. 详解 HTTP REQUESTfont color blueb4.1 请求方法font color blueb4.2 HTTP 版本font color blueb4.3 HTTP 请求报头 5. 详解 HTTP RESPONSEfont color blueb5.1 状态码和状态描述 1. HTTP协议简介 HTTP超文本传输协议是一种用于在客户端如浏览器和服务器之间传输数据的协议。它是互联网通信的基础用于请求和传输网页及其资源。HTTP是无状态无连接的这意味着每个请求都是独立的不依赖于之前的请求。主要包括以下特性
请求和响应客户端发起请求服务器响应数据。请求包括方法如GET、POST、URL和其他头部信息。响应包括状态码、头部和数据主体无状态每个请求都是独立的服务器不保存客户端的状态信息。 每次请求都需要建立新的连接 且服务器不会保存客户端的状态信息 简洁和扩展性HTTP协议设计简单易于扩展支持各种内容类型和请求方法。 2. 认识 URL 平时我们俗称的 “网址” 其实就是说的 URL。 www.example.jp是要访问的服务器的地址要经过 DNS域名解析将域名转换成对应的 IP 地址80 代表的是要访问的服务器的端口号通过IP端口就可以访问服务器上唯一的进程了。 其中 http 协议默认绑定的就是 80 端口 。 /dir/index/html 是你要访问的服务器上的资源的地址。 但是/ 并不是我们通常认为的根目录而是 web根目录。 ?之后的内容是表示要给服务器传送的参数。 3. HTTP 报文格式 3.1 HTTP REQUEST 格式 真实的 http request 格式: 首行: [方法] [url] [版本]Header报头: 请求的属性, 冒号分割的键值对;每组属性之间使用\r\n 分隔;遇到空行表示 Header 部分结束Body正文: 空行后面的内容都是 Body。Body 允许为空字符串. 如果 Body 存在, 则在Header 中会有一个 Content-Length 属性来标识 Body 的长度
抽象的 http request 格式:
3.2 HTTP RESPONSE格式 真实的 http response 格式: 首行: [版本号] [状态码] [状态码解释]Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\r\n 分隔;遇到空行表示 Header 部分结束Body: 空行后面的内容都是 Body。Body 允许为空字符串. 如果 Body 存在, 则在 Header 中会有一个 Content-Length 属性来标识 Body 的长度; 如果服务器返回了一个 html 页面, 那么 html 页面内容就是在 body 中。
抽象的 http response格式: 4. 详解 HTTP REQUEST 4.1 请求方法 其中最常用的就是 GET 方法和 POST 方法。
GET 方法
GET 方法一般是用来请求静态资源例如图片、音频、视频等除此之外也可以用 GET 方法向服务器传送参数 例如下面这个网站? 之后的就是传递的参数以 作为分隔符 https://editor.csdn.net/md?not_checkout1spm1000.2115.3001.4503articleId141829243 n o t not not_ c h e c k o u t 1 checkout1 checkout1 s p m 1000.2115.3001.4503 spm1000.2115.3001.4503 spm1000.2115.3001.4503 a r t i c l e I d 141829243 articleId141829243 articleId141829243
上面三个就是参数所以能看出来 GET 方法传递参数是通过 URL 来传递的所以传递的参数长度等肯定有限制。
POST 方法
使用 POST 方法是要将数据传送到服务器上进行处理但是它传递参数的方式和GET 不一样POST 方法传递参数的方式是将要传递的参数放到 HTTP REQUEST 请求正文中进行传递的。
区别
既然POST方法使用HTTP REQUEST 请求正文发送参数的说明请求的参数体量可以很大GET方法是以来URL传递参数的因此可以被显示的看到不安全但是POST方法是请求正文中传递参数的相较于URL安全一点但也不是绝对安全 4.2 HTTP 版本 为什么要有版本
例如微信或者各种游戏经常会进行更新每次更新之后都会有相应功能的改变例如游戏中游戏角色的加强或者削弱又例如微信各种功能的改良在客户端发送请求时我们需要让服务器知道我们的版本让服务器提供对应版本的功能如果没有进行更新就不会给你新版本的功能这里估摸着服务器会有一些条件编译。 4.3 HTTP 请求报头 我这里挑选几个比较重要的讲一下
Connection
Connection表示连接管理比如是否保持连接keep-alive或在请求后关闭连接close。 keep-alive 表示长服务比如服务器在打开一个文件描述符的时候并不会立马关闭而是一直处于运行状态知道服务被运行完毕close 表示短服务在服务器打开一个文件描述符执行完一个任务的时候会立马关闭这个文件描述符并在下次客户端请求服务器的时候服务器再重新打开一个文件描述符。
Content-Length
这个就是表示请求正文的长度很容易理解。
Content-Type
Content-Type 是 HTTP 请求和响应报头中的一个重要字段用于指定请求或响应体的媒体类型即内容类型。它告诉接收方服务器或者客户端如何解码和处理消息体。
一些文件扩展名和Content-Type的对应关系 更详细的对应关系 Http请求中各种Content-Type类型详解大全 HOST
客户端告诉服务器要访问的所请求的资源在那个主机的哪个端口上。
REFERER
表示当前页面是从哪个页面跳转过来的。
USER-AGENT
表示客户端浏览器的版本信息。 5. 详解 HTTP RESPONSE 5.1 状态码和状态描述 五大类状态码 其中 3 开头的状态码表示重定向状态码什么意思呢比如客户端想访问我的一个重定向目录/redir我们可以在服务器端处理这个路径当客户端访问 /redir 的时候将这个路径修改成另一个IP和端口就形成了重定向。
常见的状态码和状态码描述 常见的状态码和状态码描述 HTTP状态码对照表