HTTP状态码404是啥意思?

Posted 凡猫软件测试

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP状态码404是啥意思?相关的知识,希望对你有一定的参考价值。




 HTTP状态码


本节介绍HTTP 协议中的 HTTP 状态码(HTTP Stans Code),会对大部分的状态码进行详细的实例讲解。


要了解状态码,应该在实例中去了解状态码的意义,否则很容易忘记。


3.3.1

什么是HTTP状态码


每个HTTP响应报文都会携带一个状态码,用于告诉客户端请求是否成功。状态码是一个3位数字的代码。


HTTP状态码存在于HTTP的响应报文中,其作用是Web服务器用来告诉客户端发生了什么事。


HTTP 响应报文中的第一行,由HTTP 协议版本号、状态码、状态消息3部分组成。状态码用来告诉HTTP客户端 Web 服务器是否产生了预期的 HTTP响应。


3.3.2

状态码分类


HTTP/1. 1 中定义了5类状态码,状态码由3位数字组成,第一个数字定义了响应的类别。

HTTP 状态码被分为5大类,支持如表 3-2 所示的状态码。随着协议的发展,HTTP规范中会定义更多的状态码。

小技巧:假如看到一个状态码 518 而不知道其具体是什么意思,这时候只要知道 518 属于“5XX” (服务器错误)就可以了。


▼表3-2 HTTP1. 1 支持的状态码

状态码

已定义范围

分类

1XX

100~101

信息提示,表示请求已被成功接收,继续处理

2XX

200~206

成功,表示请求已被成功接收、理解、接受

3XX

300~305

重定向,要完成请求,必须要进行更进一步的处理

4XX

400~415

客户端错误,请求有语法错误或请求无法实现

5XX

500~505

服务器错误,服务器未能实现合法的请求


3.3.3

常见的状态码


一般来说,读者只需要了解如表3-3所示的常见的状态码就够了。


▼表3-3 常见状态码

名称

释义

200

OK:服务器成功处理了请求(这个是我们见到最多的)

301/302

Moved Permanently(重定向):请求的URL已移走。Reponse中应该包含一个Location URL,说明自由现在所处的位置

304

Not Modified(未修改):客户的缓存资源是最新的,需要客户端使用缓存

404

Not Found:未找到资源

401

禁止访问

501

Internal Server Error:服务器遇到一个错误,使其无法对请求提供服务


3.3.4

200 (OK)


最常见的状态码就是成功响应状态码200了,它表明该请求被成功地完成,所请求的资源成功地发送回客户端。

如图3-7所示,打开博客园首页后,用Fiddler 抓包可以看到状态码是200。


▲图 3-7 状态码200


3.3.5

204 (No Content, 没有内容)


返回的HTTP 响应中只有一些 Header和一个状态行,没有实体的主题内容(没有响应Body) 。204状态码的作用如下。

(1) 在不获取资源的情况下了解资源的情况(比如判断其类型)。

(2) 通过查看HTTP响应中的状态码看某个对象是否存在。

(3) 通过查看 Header测试资源是否被修改。

实例:如图3-8所示,启动 Fiddler, 启动浏览器访问ditu.google.cn, 你会捕获到很多204.


HTTP状态码404是啥意思?

▲图 3-8 状态码204


3.3.6

206 (Partial Content, 部分内容)

206 状态码代表服务器已经成功处理了部分 GET 请求(只有发送GET 方法的 HTTP请求,Web服务器才可能返回206) .


206的应用场景如下。

1.FlashGet、迅雷或者HTTP下载工具都是使用206状态码来实现断点续传的。

2.将一个大文档分解为多个下载段同时下载,比如在线看视频。

实例:如图3-9所示,一些流媒体技术,比如在线视频可以边看边下载,就是使用206 状态码来实现的。


HTTP状态码404是啥意思?

▲图3. 9 状态码206


启动 Fiddler, 然后用浏览器打开“搜狐视频中的绿箭侠”http: //tv.sohu.com/20121011/n354681393.shtml, 然后你在Fiddler中就能看到一堆的206。

1.浏览器发送一个 GET 方法的 HTTP 请求,Header 中包含 Range:bytes=5303296-5336063 (意思就是请求得到5303296~5336063之间的数据)。

2.Web服务器返回一个206的HTTP 响应,Header 中包含Content-Range:bytes 5305296- 5336063/12129376 (表明这次返回的内容范围)。


3.3.7

301 (Moved Permanently)


在如下情况下需要用到301。

1.防止用户输错域名。比如Google 担心用户输错域名,就把其他类似的域名买下来,比如goOgle.com, 然后重定向到www.google.com。

2.网站更换域名。一些网站壮大后,会换个更好的域名。比如京东以前的域名是www.360buy.com,现在的域名是 www.jd.com。

3.有多个权重不错的域名,需要把所有的权重都传递到新域名上,这就需要301重定向了。如果不设置 301, 多个域名绑定在一个主机头上,会被搜索引擎认为是两个相同的站点,不利于网站的排名。绑定的域名越多,内容重复度也就越高,排名越低。


实例:查看京东的老域名跳转到新域名。

启动 Fiddler, 在浏览器中输入www.360buy.com,可以看到跳转过程如图3-10 所示。


HTTP状态码404是啥意思?

▲图 3-10 状态码301


1.浏览器发送请求访问www.360buy.com,服务器返回301, 并且 Location 是www.jd.com。

2.浏览器会读取Location 中的URL, 自动发送一个新的HTTP请求去访问www.jd.com。


3.3.8

302 (Found)


当我们访问一个 URL的时候,服务器要我们访问另一个资源,这时候浏览器会继续发一个HTTP, 请求访问新的资源。


实例:如图3-11所示,在未登录状态下,直接访问需要登录才能访问的页面,会被服务器返回302, 跳转到登录页面。具体操作步骤如下。


HTTP状态码404是啥意思?

▲图3-11 状态码302


2.在Fiddler中可以看到服务器返回302, 并且 Location=/user/signin? ReturnUrl=%2f (告诉客户端,新的资源在这里)。

3.浏览器会自动再发送一个新的 HTTP 请求-去访问  http://49.233.108.117:3000/signin


3.3.9

301和302的区别


状态码301和302在语法上是一模一样的,都是在 Location 中返回新的URL.两者的34第3章 HTTP 协议请求方法和状态码


区别在于:


3.3.10

304 (Not Modified)


304状态码代表上次的文档已经被缓存了,还可以继续使用。


例如打开l论坛首页,会发现很多HTTP响应的状态码都是304, 如图3-12所示。304 的响应是没有Body的。


HTTP状态码404是啥意思?

▲图3-12 状态码304


如果你不想使用本地缓存,可以用【Ctrl+F5】组合键强制刷新页面。


3.3.11

400 (Bad Request)


状态码400表示客户端请求有语法错误,发送的HTTP请求中的数据有错误(如表单有错误、Cookie有错误)。不能被服务器所理解。


实例:快递查询接口,如果参数不对,服务器会返回400状态码。


如图3-13所示,打开Fiddler, 在浏览器中输入http://www.kuaidi100.com/query?type={%22code%22: %22100%22} 。


HTTP状态码404是啥意思?

▲图 3-13 状态码400


3.3.12

401 (Unauthorized)


状态码401 是指未授权错误。有些网页采用的是HTTP基本认证(Basic Authentication) ,需要在 HTTP 请求中带上 Authorization Header, 否则服务器会返回状态码401。


3.3.13

403 (Forbidden)


403 状态码表示 Web 客户端发送的请求被Web服务器拒绝了。如果服务器想说明为什么拒绝请求,可以在Body中描述原因。但这个状态码通常表示服务器不想说明拒绝原因。


访问URL:

http: //t2.baidu.com/it/u=1791561788, 200960144&fm=0&gp=0.jpg,

 会被服务器拒绝,并且返回403状态码,如图3-15所示。


HTTP状态码404是啥意思?

▲图 3-15 状态码 403


3.3.14

404 (Not Found)


当你访问一个URL, 这个 URL 的域名是正确的,但是资源不存在,服务器就会返回404状态码,告诉浏览器资源不存在(意味着输错了URL) .


启动 Fiddler, 输入

http://49.233.108.117:3000/8888.Html (888.html 这个文件在服务器上不存在)。


如图3-16所示,我们可以看到Web服务器会返回404状态码,这个404页面是可以自定义的。


HTTP状态码404是啥意思?

▲图 3-16 状态码 404


3.3.15

500 (Internal Server Error)


状态码500代表服务器内部错误。出现错误的原因有很多,比如代码的错误、数据库连接语句出错、程序内部抛出异常、空指针错误等。

如图3-17所示,当数据库连接不成功的时候,服务器返回500状态码。


3.3.16

503 (Server Unavailable)


状态码503表示服务器暂时不可用。由于服务器维护或者过载,服务器当前无法处理请求;这个状况是临时的,并且将在一段时间以后恢复,如图3-17所示。


▲图 3-17 状态码 503



往期精彩文章


以上是关于HTTP状态码404是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

常见的http状态码都有哪些?各是啥意思

http状态码200,300,404等是什么意思

SEO优化中404错误页面的设置和HTTP状态码说明

返回过期密码的好的http状态码是啥?

打开网页出现“405 Not Allowed”,是啥意思?怎么解决?

java中500是啥错误,404又是啥错误?