除了404,网页“暗号”还有哪些?
404 Not Found
上网冲浪的时候,不管是“网页迷路了”还是“网页乘坐火箭飞向太空”,页面都有一个神秘数字“404”。
相信对404,大部分人已经不陌生了。一旦它出现,就意味着:我们想要访问的页面找不到了。
那么,404到底是什么?又是什么原因导致404的发生呢?
其实,404是网页服务器无法找到用户请求的文档时发出的HTTP(Hyper Text Transfer Protocol,超文本传输协议)状态码。出现404页面就是为了提醒用户网页发生了错误。
导致这种错误发生的原因可能是:
- 网页数据被更改、或者上传到网页的文件目录/文件名称被更改,导致网页失效。
- 网页文件被移动或删除,导致原链接失效。
- 我们自己输入的网址有错误,不能链接到所需的文件。
- 你压根没插网线或者家里Wi-Fi信号太差。
……
总之,404就是网页向你发出了“此路不通”的信号。
502 Bad Gateway
除了404,还有一个最常见的HTTP状态码——502。
之前某站不能访问的时候,网友们纷纷发声:刚开始页面出现404以为是自己的原因,后来刷出来502,知道不是自己的原因就放心了。
因为502代码表示内部网络故障或设置问题,即内部网络拥塞。
通常是网络内部存在大量的数据调用或交互时,网页内容提供方的一个或两个服务器,由于性能缺陷或程序错误,无法正常运行,使得网页上的内容无法被传输到用户的浏览器上。
说人话就是服务器崩了、网站挂了。此种情况在抢票、某个热点事件爆发时都很常见。。。
这个时候我们能做的就是刷新网页、重新打开页面、以及耐心的等待。
由此可知,404和502这两种HTTP状态码在本质上是有很大不同的,下面我们继续了解下其它HTTP状态码。
HTTP状态码
超文本传输协议HTTP本身是一个简单的请求-响应协议,规定了网页服务器和浏览器之间的信息传递规范。HTTP状态码(HTTP Status Code)是网页服务器响应信息的一部分,是用来表示超文本传输协议响应状态的3位数字代码。
当你访问一个网页时,浏览器会向网页所在服务器发出请求。该网页所在的服务器接收和解释请求消息之后,会返回一个包含HTTP状态码的响应信息用以响应浏览器的请求。
我们访问网页时,服务器都会通过HTTP状态码向我们传达简单的信息。状态码既可以指明具体请求是否已成功,又可以揭示请求失败的确切原因。
常见状态码
HTTP状态码被记录在服务器日志中,同时也可能在客户端显示,就是打开页面出错时,浏览器显示的错误信息代码,比如大家看到的404或502。
状态码的第一个数字代表了服务器响应的状态,目前常见的响应状态有5种。
除了前面提到的404和502,以下9个常见的状态码应该能让你对状态码有更直观的感受。
100 Continue(继续)
客户端已接收部分请求,并准备好接收剩下的部分,请求者需要继续提出请求。
200 OK(请求成功)
服务器已成功处理了请求,可以正常打开网页啦(或者请求的文件)。
206 Partial Content(部分内容)
服务器成功处理了部分GET请求。HTTP下载工具(比如迅雷)都是使用这类响应实现断点续传或者将一个大文档分解为多个下载段同时下载的。
301 Moved Permanently(永久移动)
被请求的资源已永久移动到新位置,响应信息中会包括新的URI(Uniform Resource Identifier,统一资源标识符),浏览器会自动定向到新URI。今后任何对此资源的请求都应使用新的URI代替。
302 Found(发现)
服务器要求客户端执行临时重定向(原始描述短语为“Moved Temporarily”)。服务器临时从不同位置的网页响应请求,但是这样的重定向是临时的,之后的请求客户端仍应向原有地址发送。
400 Bad Request(错误请求)
服务器通过返回400错误告诉客户端,客户端的请求语法出错,服务器端无法理解。
401 Unauthorized(未经授权)
服务器要求客户端进行身份验证,错误的登录尝试是导致这一错误的主要原因。
403 Forbidden(禁止访问)
服务器理解了你的请求,但是拒绝执行。任何登录对403错误都不起作用,尝试访问被禁止的网站目录时,就会发生403错误。
500 Internal Server Error(内部服务器错误)
服务器内部的错误导致无法完成请求,一般来说,可能是服务器的程序码出错。例如,网页服务器过载时将无法正确处理访问请求。
简单来说,1、2、3开头的状态码我们不用关心,4、5开头的稍微留意下就行了。
如果看到这里你对状态码还有兴趣,小编整理了一份状态码清单,可以了解一下哦~~
左右滑动查看更多
来源:中兴文档
编辑:荔枝、yrLewis
出现网页错误时,404、502这些数字代表啥
平时,我们在浏览网页时偶尔会遇到写有502的报错页面,更多时候会出现404错误页面,那么它们到底是什么意思呢?
登录网页时这些步骤在后台运行
当我们在IE、搜狗、火狐等浏览器中访问一个网址(域名)的时候,首先要找到域名所对应服务器的IP地址,简单说就是先要找到所需的服务器在哪里。
得到服务器的IP地址后,我们电脑上的浏览器要向服务器发出想加载网页资源的请求,建立一个浏览器与服务器的连接。
接着,浏览器会发送网页链接请求,服务器收到请求后,进行相应的处理,比如说身份验证等。这一步的目的是,查看你有没有访问服务器内相应资源的权限。
以上步骤完成后,服务器会将资源发送给浏览器,这一步称为网页响应。在资源传输完成后,浏览器成功接收到来自服务器的资源时,电脑就会显示出我们想要查看的相应内容。
前面介绍的一系列动作都是在瞬间完成的,平时我们点击网页后,电脑后台进行的,便是“请求资源”和“网页响应”的过程。
当然,上述过程中可能会发生一些意外情况,比如用户身份验证失败、该用户失去访问资源的权限、服务器在处理过程中出现错误等。
所以,在网页响应中还要加入相应的状态码来告诉浏览器当前请求的处理状态,这就是我们在链接网页出错时所看到的404、502等状态码了。
404代表找不到查询网页
404和502都是一种表示页面出现错误的代码,也叫做页面状态码。那么,404和502到底是什么意思?它们又分别代表什么样的页面错误呢?
404代码的意思是“输入错误,找不到要查询的页面”,表示用户在浏览网页时,服务器无法提供正确的信息或是服务器因不明原因无法将信息发送给访问者。
其中,404的第一个4表示客户端出错,第二个0表示你把网址打错了,最后的那个4表示“Not Found”,即找不到网页。
科学家设计404页面的主要作用是提醒用户,网站可以打开但是想要访问的页面找不到了。简言之,当404页面出现时,此网页链接就成为了“死链接”。
那么,是什么原因导致404错误的发生呢?
导致这种错误发生的原因有3种可能,一是管理员将原始的网页数据更改,导致网页失效。
二是上传到网页的文件目录或文件名称被更改,导致原网页链接失效,另外文件被移动或被删除也可能导致原链接失效。
三是输入的网址有错误,不能链接到所需的文件。
对于404错误,还有一个比较奇葩的原因,据微软IE部门客服中心统计,接到“该页无法显示”的投诉中,大部分是用户上网的时候没有插网线或者没有连接WiFi导致的。现在的用户大多用的是WiFi网络,也有可能在信号很差时出现404错误。
502意味着内部网络拥堵
说完404错误,我们再来谈谈502错误是怎么导致的?
502代码表示内部网络故障或设置问题,即内部网络拥塞,可能是内部存在大量的数据调用或交互时,网页内容提供方的一个或两个服务器,由于性能缺陷或程序错误,无法正常运行,使得网页上的内容无法被传输到用户的浏览器上。这就是为什么网页提供方使用更高配置的设备后,502错误出现的次数会少一些的原因。
目前,网络上代理和缓存的使用日渐增加,我们在对网页内容进行申请时,处理我们访问网页请求的一连串电脑或服务器中,只要有一个环节出现差错,502的错误就会产生。
由此,我们可以推演抢票网站崩溃时的情形:当用户大量涌入购票网站时,抢票网站的数据库瞬间需要调用和读取大量数据,而内部网络的服务器无法一下子处理如此多的数据,最终引发了502错误。
这就需要互联网服务供应商(ISP)及Web服务器软件供应商联络,由他们去检查在其控制下的不同电脑与服务器之间的IP数据传输的流通状况。
对于502错误,我们普通用户无法对服务器进行设置,只能采取一些比较简单的方法处理。
例如在我们进行网页连接时,可以尝试多次刷新,但这是最基本的刷新,只是从本地的硬盘重新读取数据到我们的浏览器,不一定能够重新连接服务器。
如果简单的刷新没有效果,我们不妨关掉502页面,再重新登录网页。
这样恢复正常网页的可能性会更大,因为这种方法是从服务器进行刷新的,但是该方法操作的过程会比较慢。为了减少重新点击的时间,用户也可以用快捷键Ctrl+F5来进行服务器刷新。
由上可知,404和502的网页错误代码在本质上是有很大不同的,对于不同的网页错误,我们可以找到一些应对的小方法。
但是要想从根本上解决问题还是得从各个服务器进行改进,各网站服务商可以进一步优化各自的服务器,减少404和502的出现,让用户可以享受更好的浏览体验。
错误代码解析500、501、502、503、504
⼀:500错误
1、500 Internal Server Error 内部服务错误:顾名思义500错误⼀般是服务器遇到意外情况,⽽⽆法完成请求。
2、500出错的可能性:
a、编程语⾔语法错误,web脚本错误
b、并发⾼时,因为系统资源限制,⽽不能打开过多的⽂件
3、⼀般解决思路:
a、查看nginx、php的错误⽇志⽂件,从⽽看出端倪
b、如果是too many open files,修改nginx的worker_rlimit_nofile参数,使⽤ulimit查看系统打开⽂件限制,修
改/etc/security/limits.conf,还是出现too many open files,那就要考虑做负载均衡,把流量分散到不同服务器上去了
c、如果是脚本的问题,则需要修复脚本错误,优化代码
⼆:502、504错误
1、502 Bad Gateway错误、504 Bad Gateway timeout ⽹关超时
2、502、504出现的可能性
web服务器故障、程序进程不够
3、⼀般解决思路
a、使⽤nginx代理,⽽后端服务器发⽣故障;或者php-cgi进程数不够⽤;php执⾏时间长,或者是php-cgi进程死掉;已经fastCGI使⽤情况等都会导致502、504错误。
b、502 是指请求的php-fpm已经执⾏,但是由于某种原因⽽没有执⾏完毕,最终导致php-fpm进程终⽌。⼀般来说,与php-fpm.conf的设置有关,也与php的执⾏程序性能有关,⽹站的访问量⼤,⽽php-cgi的进程数偏少。针对这种情况的502错误,只需增加 php-cgi的进程数。具体就是修改/usr/local/php/etc/ php-fpm.conf⽂件,将其中的max_children值适当增加。这个数据要依据你的服务器的配置进⾏设置。⼀般⼀个php-cgi进程占20M内存,你可以⾃⼰计算下,适量增多。
/usr/local/php/sbin/php-fpm reload 然后重启⼀下.
c、504 表⽰超时,也就是客户端所发出的请求没有到达⽹关,请求没有到可以执⾏的php-fpm。与nginx.conf的配置也有关系。
501 服务器不具备完成请求的功能。例如,服务器⽆法识别请求⽅法时可能会返回此代码。
503 服务器⽬前⽆法使⽤(由于超载或停机维护)。通常,这只是暂时状态。(服务不可⽤)
505 服务器不⽀持请求中所⽤的 HTTP 协议版本。(HTTP 版本不受⽀持)
附:新增全部状态码含义
状态码分类
整体范围 已定义范围 分类
100~199 100~101 信息提⽰
200~299 200~206 成功
300~399 300~305 重定向
400~499 400~415 客户端错误
500~599 500~505 服务器错误
100(continue):说明收到了请求的初始部分,请客户端继续。
客户端发送⼀个携带值为100 Countinue的Expect请求⾸部,意味着客户端在发送实体前等待100 Continue响应。这是⼀种优化,客户端在避免向服务器发送⼀个⼤实体时,才使⽤。
101(Switching Protocols):说明服务器正在根据客户端的指定,将协议切换成Update⾸部所列的协议。
200(OK):请求没问题,实体的主体部分包含了所请求的资源。
201(Created):⽤于创建服务器对象的请求的响应(例如PUT)。实体主体部分包含各种引⽤了已创建的资源的URL。
202(Accepted):请求已被接受,但服务器还未对其执⾏任何动作,⽆法保证服务器会完成这个请求。
203(Non-Authoritative Information):实体⾸部包含的信息不是来⾃于源端服务器,⽽是来⾃资源的⼀份副本。
204(No Content):响应报⽂有状态⾏和⾸部,但没有实体的主体部分。
205(Reset Content):告知浏览器清除当前页⾯中的所有HTML表单元素。
206(Partial Content):成功执⾏了⼀个部分或Range(范围)请求。
重定向状态码要么告知客户端使⽤替代位置来访问他们所要访问的资源,要么提供⼀个替代的响应⽽不是资源的内容。
资源被移动的情况下,发送⼀个重定向状态码和⼀个可选的Location⾸部告知客户端资源已被移动,并且可以在哪⾥找到。
300(Multiple Choices):客户端请求⼀个实际指向多个资源的URL时会返回这个状态码。
301(Moved Permanently):请求的URL已经被移除,响应中Location⾸部包含资源现所处的URL。
302(Found):与301类似,但是客户端应该⽤Location⾸部的URL来临时定位资源,将来的请求仍⽤⽼的URL。
303(See Other):告知客户端应该⽤另⼀个URL来获取资源,新URL位于Location⾸部,允许POST请求的响应将客户端定向到某个资源上去。
304(Not Modified):客户端可以通过所包含的请求⾸部,使其变成有条件的。
305(Use Proxy):说明必须通过⼀个代理来访问资源,代理位置由Location⾸部给出。
306(未使⽤)
307(Temporary Redirect):和302⼀样。
400(Bad Request):⽤于告知客户端它发送了⼀个错误的请求。
401(Unauthorized):与适当的⾸部⼀起返回,在这些⾸部中请求客户端在获取对资源的访问权之前,对⾃⼰进⾏认证。
402(Payment Required):保留状态码,未来之⽤。
403(Forbidden):说明请求被访问权拒绝。拒绝原因可能在实体的主体部分。
404(Not Found):服务器⽆法找到所请求的URL。
405(Method Not Allowed):发起请求中带有所请求的URL不⽀持的⽅法。响应中有Allow⾸部,告知客户端对所请求的资源可以⽤哪些⽅法。
406(Not Acceptable):客户端可以通过参数说明它们接受什么类型的实体,服务器没有和客户端可接受的URL相匹配的资源时⽤此代码。
407(Proxy Authentication Required):和401相似,但⽤于要求对资源进⾏认证的代理服务器。
408(Request Timeout):如果完成请求所花时间太长,服务器可以返回此状态码。
409(Confict):说明请求可能在资源上引发的⼀些冲突。
410(Gone):与404类似,只是服务器之前有过此资源。
411(Length Required):服务器要求在请求报⽂中包含Content-Length⾸部。
412(Precondition Failed):客户端发起了条件请求,且其中⼀个条件失败了。
413(Request Entity Too Large):实体主体部分过⼤。
414(Request URI Too Long):URL⽐服务器能处理的长。
415(Unsupport Media Type):⽆法理解或⽆法⽀持客户端所发实体的内容类型。
416(Requested Range Not Satisfiable):请求报⽂请求的是指定资源的某个范围,⽽此范围⽆效或⽆法满⾜。
417(Expectation Failed):请求的Expect请求⾸部包含⼀个期望,但服务器⽆法满⾜此期望。
500(Internal Server Error):服务器遇到⼀个妨碍它为请求提供服务的错误。
501(Not Implemented):客户端发起的请求超出服务器的能⼒范围。
502(Bad Gateway):作为代理或⽹关使⽤的服务器从请求响应链的下⼀条链路上收到了⼀条伪响应。
503(Service Unavailable):说明服务器现在⽆法为请求提供服务,将来可以。
504(Gateway Timeout):与408相似。
505(HTTP Version Not Support):服务器收到的请求使⽤了它⽆法或不愿意⽀持的协议版本。
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。