【计算机网络】详解HTTP请求和响应格式常见请求方法Header报头响应报文状态码URL

一、HTTP协议的定义

        在互联网世界中,HTTP HyperText Transfer Protocol,超文本传输协议)是一个至关重要的协议。它定义了客户端(如浏览器)与服务器之间如何通信,以交换或传输超文本(如 HTML 文档)。HTTP 协议是客户端与服务器之间通信的基础。客户端通过 HTTP 协议向服务器发送请求,服务器收到请求后处理并返回响应。 HTTP 协议是一个无连接、无状态的协议,即每次请求都需要建立新的连接,且服务器不会保存客户端的状态信息

二、认识URL

        平时我们俗称的 " 网址" 其实就是说的 URL。在互联网中,要找到一份资源,要知道资源所在主机的IP地址以及在该主机中的文件路径。域名会被解释成IP和端口。//,/,?等都是特殊字符,域名(服务器地址)是禁止出现特殊字符的。?后面都是kv参数,如果我们的搜索内容中本来就包含了特殊字符,那特殊字符在请求时浏览器会对其进行编码转换成对应的十六进制,我们的汉字也会被编码转换成对应的十六进制。
上面的/dir就是网站注册的搜索服务

2.1、urlencode 和urldecode

        像/?:等这样的字符,已经被url当做特殊意义理解。因此这些字符不能随意出现。比如,某个参数中需要带有这些特殊字符,就必须先对特殊字符进行转义。转义的规则如下:将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位 做一位,前面加上%,编码成%XY格式。

三、HTTP请求和响应格式

        URI指的是指定服务器下的一串路径,指定服务器下的什么资源。 这里HTTP版本指的是客户端的版本由上图可知,空行可以保证我们把报头全部读完,请求正文可以不携带。如果我们没有指明我们要请求什么资源,URI默认就是/,http协议可以支持默认首页。我们在一个网站中访问网页,进行页面跳转,每一次访问,都是一次http请求进一步的我们也可以理解什么是网站,网站本质上就是一对特定目录和文件构成的目录结构一张网页里可以包含很多资源,比如说图片。获取一张完整的网页,要先获取html,渲染解析html,浏览器会发起二次或多次请求,获取完成完整网页的所有元素,然后构成一个完整的网页结果。http内部要根据目标要访问的资源的文件后缀,区分清楚文件类型,通过Content-Type告诉浏览器我的响应正文的类型。

        注意点:设置端口号复用,当服务器已经停止使用时还有客户端连着,此时服务器端的端口号还会被一直占用着,导致无法立即重启,设置端口号复用可以实现立即重启。

        注意点:http的请求本质上是一个大字符串。httpserver尽量不依赖任何第三方库。我们可以把功能、服务当成资源,http本身不能进行数据处理

 

         这里HTTP版本指的是服务端的版本。我们可以看到请求报头和响应报头有的格式是一样的。 请求报头和响应报头中的版本字段可以保证客户端和服务端在通信时版本的匹配,不至于产生通信问题。

四、HTTP常见请求方法

4.1、GET 方法

        GET方法会以url的方式来向服务器提交参数,可以用于请求URL 指定的资源,指定资源经服务器端解析后返回响应内容。

4.2、POST方法

        POST方法会以正文形式进行参数的上传。POST方法上传参数要比GET方法更加私密,另外,POST方法可以传递更多、更大的数据。

五、HTTP常见Header报头

  • Content-Type: 数据类型(text/html 等)
  • Content-Length: Body 的长度
  • Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
  • User-Agent: 声明用户的操作系统和浏览器版本信息;
  • referer: 当前页面是从哪个页面跳转过来的;
  • Location: 搭配 3xx 状态码使用, 告诉客户端接下来要去哪里访问;
  • Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能;
  • Accept:客户端能接收的数据格式。
  • Connection:Connection 字段可用于管理持久连接(也称为长连接)。持久连接允许客户端和服务器在请求/响应完成后不立即关闭 TCP 连接,以便在同一个连接上发送多个请求和接收多个响应。在 HTTP/1.1 协议中,默认使用持久连接。当客户端和服务器都不明确指定关闭连接时,连接将保持打开状态,以便后续的请求和响应可以复用同一个连接。在 HTTP/1.0 协议中,默认连接是非持久的。如果希望在 HTTP/1.0上实现持久连接,需要在请求头中显式设置 Connection: keep-alive。keep-alive:表示希望保持连接以复用 TCP 连接。close:表示请求/响应完成后,应该关闭 TCP 连接。

 六、HTTP响应报文状态码

        最常见的状态码, 比如 200(OK), 404(Not Found), 403(Forbidden), 302(Redirect, 重定向), 504(Bad Gateway)。

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

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

相关文章

如何选择合适的跨境网络专线?

选择合适的跨境网络专线对于保障企业的国际业务顺畅运行至关重要。以下是一些选择跨境网络专线时可以参考的关键点: 服务商的信誉和经验:首先考察服务商的市场声誉和行业经验。一个好的服务商应该拥有良好的客户评价和成功案例,这表明他们有能…

【4.5】图搜索算法-BFS和DFS求岛屿的最大面积

一、题目 给定一个包含了一些 0 和 1 的非空二维数组 grid 。一个岛屿是由一些相邻的 1 (代表土地)构成的组合, 这里的「相邻」要求两个1必须在水 平或者竖直方向上相邻 。你可以假设 grid 的四个边缘都被0(代表水)包围着。 找到给定的二维…

4.数据结构与算法-线性表的顺序表示和实现

2.1 线性表的定义和特点 线性表例子 线性表的逻辑特征 2.2 案例引入 案例2.1 案例2.1:一元多项式的运算 案例2.2:系数多项式的运算 用时间换取空间--线性数组相对链式访问速度快 但这种方法链式更节省空间,所以用时间换取空间 案例2.3&…

Hbase要点简记

Hbase要点简记 Hbase1、底层架构2、表逻辑结构 Hbase HBase是一个分布式的、列式的、实时查询的、非关系型数据库,可以处理PB级别的数据,吞吐量可以到的百万查询/每秒。主要应用于接口等实时数据应用需求,针对具体需求,设计高效率…

Arm Linux 交叉编译openssl 1.1.1

一、openssl 源码下载 OpenSSL的官方网站或源代码仓库下载最新或指定版本的OpenSSL源代码。 官网地址: https://openssl-library.org/source/index.html 旧版本下载: https://openssl-library.org/source/old/index.html 这里以 1.1.1 为例 国内git…

plt.bar函数介绍及实战

目录 plt.bar() 函数实战 plt.bar() 函数 plt.bar() 函数是 Matplotlib 中用于创建柱状图的函数。它用于在图形中绘制一个或多个柱状图,通常用于展示类别型数据的数量或大小的比较。 基本语法: plt.bar(x, height, width0.8, bottomNone, aligncenter…

归并排序,外排序,计数排序(非比较排序)

归并排序:(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序…

大模型(LLM) 是仅仅比 模型(Model) 更大吗?

我们日常经常提到模型 model,大模型LLM,大家都知道这两者之间的区别和联系吗? 只是如下图这样,大小的区别吗?下面我们对模型model和大模型LLM进行解释和描述 什么是模型? 模型是机器学习中一个核心概念&a…

[Docker学习笔记]Docker的原理Docker常见命令

文章目录 什么是DockerDocker的优势Docker的原理Docker 的安装Docker 的 namespaces Docker的常见命令docker version:查看版本信息docker info 查看docker详细信息我们关注的信息 docker search:镜像搜索docker pull:镜像拉取到本地docker push:推送本地镜像到镜像仓库docker …

SWAP、AquaCrop、FVCOM、Delft3D、SWAT、R+VIC、HSPF、HEC-HMS......

全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程&…

[大语言模型] 情感认知在大型语言模型中的近期进展-2024-09-26

[大语言模型] 情感认知在大型语言模型中的近期进展-2024-09-26 目录 文章目录 [大语言模型] 情感认知在大型语言模型中的近期进展-2024-09-26目录论文信息摘要主要内容包括:研究方法与资源的分类:结论: 论文信息 Title: Recent Advancement …

Halcon基础系列1-基础算子

1 窗口介绍 打开Halcon 的主界面主要有图形窗口、算子窗口、变量窗口和程序窗口,可拖动调整位置,关闭后可在窗口下拉选项中找到。 2 显示操作 关闭-dev_close_window() 打开-dev_open_window (0, 0, 712, 512, black, WindowHandle) 显示-dev_display(…

【数据结构与算法】Z算法(扩展KMP)(C++和Python写法)

Z算法(扩展KMP) 文章目录 Z算法(扩展KMP)朴素求法线性求法力扣类型题变种题:[3303. 第一个几乎相等子字符串的下标](https://leetcode.cn/problems/find-the-occurrence-of-first-almost-equal-substring/) 所谓Z算法&…

9.29 LeetCode 3304、3300、3301

思路: ⭐进行无限次操作,但是 k 的取值小于 500 ,所以当 word 的长度大于 500 时就可以停止操作进行取值了 如果字符为 ‘z’ ,单独处理使其变为 ‘a’ 得到得到操作后的新字符串,和原字符串拼接 class Solution { …

box-im

任何一个开源项目,都可以让自己得到提升! 启动minio: minio.exe server C:\Program Files\Minio\minioData

springboot+大数据+基于协同过滤算法的校园食堂订餐系统【内含源码+文档+部署教程】

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ 🍅由于篇幅限制,想要获取完整文章或者源码,或者代做&am…

刚面试完的前端面试题

今天晚上参加了一场长达40多分钟的技术面。我觉得面试官非常专业,问的问题也都是很棒的!自己很多知识都需要学习。所以我决定回想并记录下来。回答不对的地方欢迎大家指正! 我自己在小本本上回忆出来的大概就是26道题。后期我会持续更新我学习…

数字图像处理:空间域滤波

1.数字图像处理:空间域滤波 1.1 滤波器核(相关核)与卷积 图像上的邻域计算 线性空间滤波的原理 滤波器核(相关核)是如何得到的? 空间域的卷积 卷积:滤波器核与window中的对应值相乘后所有…

SpringBoot实现学科竞赛管理:最佳实践

摘 要 随着国家教育体制的改革,全国各地举办的竞赛活动数目也是逐年增加,面对如此大的数目的竞赛信息,传统竞赛管理方式已经无法满足需求,为了提高效率,竞赛管理系统应运而生。 本学科竞赛管理系统以实际运用为开发背景…

SpringBoot--为什么Controller是串行的?怎样才能并行?

原文网址:SpringBoot--为什么Controller是串行的?怎样才能并行?-CSDN博客 简介 本文介绍SpringBoot为什么Controller是串行的?在什么场景下才能并行执行? 大家都知道,SpringBoot的Controller按理是并行执…