在网上遇到的 404 这是什么意思?

智聪说说网
智聪说说网
智聪说说网
43262
文章
0
评论
2023-01-1108:25:52 评论 10

随着互联网时代的发展和进步,我们的学习、工作和生活早已离不开互联网,智能家居、网购、日常出行都需要互联网的支持。互联网给生活带来了很多便利。

你有没有遇到过这样的情况?当我们用手机或电脑浏览一些信息时,或者在搜索引擎中搜索信息,点击搜索结果跳转,浏览器跳出来 404 Not Found 的空白页。

我相信所有的老网民都熟悉404的数字。这个错误的代码意味着服务器找不到文件。通常,访问页面已更改或删除,或输入错误的访问地址。

那为什么用 404 代表访问资源不存在的不是其他数字?互联网上对 404 诞生有这样一个传说。据传在第三次科技革命前,整个互联网的形态就像是一个大型的中央数据库,并设置在一个叫 404 的房间里。当时所有的互联网访问请求都是手动完成的,如果是在 404 如果房间里没有找到申请人需要的文件,或者申请人写错了文件号,工作人员会返回Room 404 : File Not Found”的信息。

当然,经过实际研究,我们发现了传说 Room 404 不存在,而是 404 真正的来源来自互联网 -HTTP 协议说起。

众所周知,互联网的建立打破了地域限制,让我们足不出户,通过浏览器和服务器之间的交流了解世界。通过浏览器和服务器之间的交流 HTTP 协议。

HTTP(Hypertext Transfer Protocol),超文本传输协议是应用层协议。由于其简捷、快速的方式,适用于分布式和合作式超媒体信息系统。自 1990 万维网自年起应用(WWW)全球信息服务系统。

用户上网的过程是浏览器通过 HTTP 协议将请求发送到服务端,然后将服务端主机上的内容显示到本地。

支撑着 HTTP 协议工作是 TCP/IP 模范工人协议负责底层数据传输。从这个角度来看,所谓的超文本传输协议实际上与传输无关,有点名不副实。那为什么 HTTP 又称传输协议?答案是传输报文内容。

HTTP 协议在规范文档里详细定义了报文的格式,规定了组成部分,解析规则,还有处理策略,所以可以在 TCP/IP 除数据传输外,层上还实现了更灵活、更丰富的功能。

TCP 在实际传输数据之前,添加了协议报纸 20 存储字节头部数据,存储字节头部数据 TCP 协议所需的额外信息,如发送方的端口号、接收方的端口号、包序号、标志位等。有了这个附加 TCP 头部,数据包可以正确传输,到达目的地后去掉头部,就可以得到真实的数据。

HTTP 该协议还需要在实际传输数据之前添加此类头数据,但与 TCP 不同的是,它是一个纯文本协议,头部数据是 ASCII 用肉眼轻松阅读代码文本,无需程序分析即可理解。

HTTP 协议要求报文和响应报文的结构基本相同,主要由三部分组成:

状态行(status line):描述响应的基本信息,即服务器响应状态;头部字段集合(header):使用 key-value 报纸的形式更详细;消息正文(entity):实际响应的数据不一定是纯文本,可以是图片、视频等二进制数据。状态行和头部字段常被称为响应头,新闻文本也被称为实体和header对应很多时候直接叫body”。

HTTP 协议规定必须有报纸 header,但可以没有 body,且在 header 之后一定要有空行,也就是空行CRLF十六进制的0D0A”。

△ 完整 HTTP 响应报文

以拍摄云存储接口文件上传后返回的响应报头为例,第一行HTTP/2 200 OK为状态行,由三部分组成:

版本号:用于报纸的表示 HTTP 协议版本,上图中版本 HTTP/2;状态码:一个三位数,用代码的形式表示处理的结果,比如 200 是成功,404 是资源不存在;原因短语:作为数字状态码的补充,是状态码的简短文字描述,如OK”“Not Found”。而后面的“Content-Type”、“Connection等等都属于 header,报纸的最后是一条空白线,没有 body。而后面的“Content-Type”、“Connection”等等都属于 header,报纸的最后是一条空白线,没有 body。

多数情况下 HTTP 报文只有 header 没有 body。虽然 HTTP 协议对 header 尺寸没有限制,但头部过大可能会占用大量的服务器资源,影响运行效率。因此各个 Web 服务器不允许请求头太大。即便如此,互联网上还是有很多大头在跑来跑去。

为了减少大头占用的资源,减少检测错误地址的时间,网站通常选择状态代码来承担责任,因为数字可以比文本更好地减少 HTTP 报文头部体积。

响应报告可以让客户快速知道请求是否通过状态码正确处理,让服务端通过状态码选择最合适的状态处理请求回复客户端。同时,通过各种状态码,服务端可以明确告知客户端响应状态,客户端可以明确下一步操作。

目前 RFC 共有标准 41 允许自行扩展的状态码。Apache、Nginx 等 Web 服务器定义了一些专有的状态码。在开发 Web 我们还可以在不冲突的情况下设置自己的专有状态码。

接下来,让我们详细谈谈常见的状态码代表什么?

状态码的意义在于表达 HTTP 在数据处理的状态中,客户端可以根据代码实时转换处理状态,通常是一个十进制数字 RFC 标准中规定的状态代码为三位数,从 000 到 999。常见的状态代码有一定的设计格式,分为五类,用数字的第一位来表示分类 0~99 不,状态码的实际可用范围将大大缩小,从 000~999 变成了 100~599。

1×× 类状态码属于提示信息,是协议处理的中间状态,实际上很少使用。

我们偶尔能看到的是 “101 Switching Protocols”。它的意思是使用客户端 Upgrade 头字段,要求在 HTTP 以协议为基础,继续通信其他协议,如 WebSocket。如果服务器同意更改协议,则会发送状态码 101,但数据传输将不再使用 HTTP 了。

此外还有 “100 Continue” 。到目前为止,一切都正常, 客户应继续要求, 若已完成请求,则忽略。一般出现在文件上传中。

2×× 类状态码表示服务器收到并成功处理了客户端的请求,这也是客户端最愿意看到的状态码。

“200 OK是最常见的成功状态代码,表示一切正常,服务器返回处理结果,如客户期望。

“204 No Content”是另一个很常见的成功状态码,它的含义与“200 OK基本相同,但响应头后没有 body 数据。

“206 Partial Content” 一般用于块下载或断点续传的基础,出现在客户端发送范围请求和需要获取资源的部分数据时。 200 同样,服务器也成功处理了请求,但是 body 数据不是资源的全部,而是其中的一部分。状态码 206 通常伴随着头字段Content-Range表示响应报文 body 客户端确认数据的具体范围,如Content-Range: bytes 0-66/888是指这次获得的总数 888 个字节的前 66 个字节。

3×× 类状态码表示客户端要求的资源发生了变化,客户端必须使用新的 URI 重新发送请求获取资源,通常称为重定向,包括命名 301、302 跳转。

“301 Moved Permanently俗称永久重定向,意思是要求的资源已经不存在,需要重用新的 URI 再次访问。与之类似的是302 Found一旦描述短语是Moved Temporarily俗称临时重定向,意思是要求的资源还在,但需要暂时使用另一个资源 URI 来访问。

“304 Not Modified” 它是一个有趣的状态码,用于 If-Modified-Since 其他条件要求表明资源未修改,用于缓存控制。它没有一般的跳转意义,但可以理解为重定向已到缓存的文件(即缓存重定向)。

4××类状态码表示客户端发送的请求报告错误,服务器无法处理。它是一个具有真正错误码含义的状态码。

“400 Bad Request这是一个通用的错误代码,表示请求报告是错误的,但具体的数据格式是错误的,没有请求头或其他错误不会明确指示,所以在 Web 开发时,一般尽量避免返回客户端 400,使用其他更清晰的状态码。

“403 Forbidden事实上,服务器禁止访问资源并不是客户端要求的错误。原因可能多种多样,例如信息敏感、法律禁止等。

“404 Not Found这可能是我们最常见的状态代码,它通常是指在服务器上找不到资源,因此无法提供给客户端。

4×× 剩下的一些代码清楚地说明了错误的原因,这很容易理解。开发中常用的代码有:

405 Method Not Allowed:不允许使用某些方法操作资源,例如不允许 POST 只能 GET;406 Not Acceptable:资源不能满足客户请求的条件,如中文请求,但只有英文;408 Request Timeout:服务器等待时间过长;409 Conflict:多个请求发生冲突,可理解为多线程并发时的竞态;413 Request Entity Too Large:请求报文中的 body 太大;414 Request-URI Too Long:请求行里的 URI 太大;429 Too Many Requests:客户端发送了太多的请求,触发服务器限制;431 Request Header Fields Too Large:请求头的某个字段或整体太大。5×× 类状态码表示客户端请求报告正确,但服务器在处理过程中出现内部错误,无法返回应有的响应数据,是服务器端的错误码。5×× 类状态码表示客户端请求报告正确,但服务器在处理过程中出现内部错误,无法返回应有的响应数据,是服务器端的错误码。

“500 Internal Server Error” 与 400 类似地,它也是一个常见的错误代码,我们不知道服务器发生了什么错误。不过和 400 相反,开发人员通常不会将服务器内的错误详细信息返回到访问端。虽然不利于调试,但可以防止黑客窥探或分析。

“501 Not Implemented” 表示不支持客户端请求的功能,类似于即将开始 业,敬请期待”的意思。

{n}{n}

  “502 Bad Gateway” 通常是服务器作为网关或者代理时返回的错误码,表示服务器自身工作正常,访问后端服务器时发生了错误,但具体的错误原因也是不知

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时候联系我们修改或删除,多谢。

标签:在网上遇到的 404 这是什么意思?

智聪说说网
  • 本文由 发表于 2023-01-1108:25:52
  • 转载请务必保留本文链接:https://www.zhicongwang.com/89585.html