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
204 (No Content, 没有内容)
返回的HTTP 响应中只有一些 Header和一个状态行,没有实体的主题内容(没有响应Body) 。204状态码的作用如下。
(1) 在不获取资源的情况下了解资源的情况(比如判断其类型)。
(2) 通过查看HTTP响应中的状态码看某个对象是否存在。
(3) 通过查看 Header测试资源是否被修改。
实例:如图3-8所示,启动 Fiddler, 启动浏览器访问ditu.google.cn, 你会捕获到很多204.
▲图 3-8 状态码204
3.3.6
206 (Partial Content, 部分内容)
206 状态码代表服务器已经成功处理了部分 GET 请求(只有发送GET 方法的 HTTP请求,Web服务器才可能返回206) .
206的应用场景如下。
1.FlashGet、迅雷或者HTTP下载工具都是使用206状态码来实现断点续传的。
2.将一个大文档分解为多个下载段同时下载,比如在线看视频。
实例:如图3-9所示,一些流媒体技术,比如在线视频可以边看边下载,就是使用206 状态码来实现的。
▲图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 所示。
▲图 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, 跳转到登录页面。具体操作步骤如下。
▲图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的。
▲图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} 。
▲图 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所示。
▲图 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页面是可以自定义的。
▲图 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是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章