前端资料之HTTP状态码

mac2025-12-24  5

◆ HTTP状态码(HTTP Status Code)

每个HTTP响应报文都会携带一个状态码,用于告诉客户端请求是否成功。状态码是一个3位数字的代码。HTTP状态码存在于HTTP的响应报文中,其作用是Web服务器用来告诉客户端发生了什么事。HTTP响应报文中的第一行,由HTTP协议版本号、状态码、状态消息3部分组成。状态码用来告诉HTTP客户端Web服务器是否产生了预期的HTTP响应。

◆ 状态码分类:

HTTP/1.1中状态码由3位数字组成,第一个数字定义了响应的类别。HTTP状态码被分为5大类:

状态码已定义范围分类1XX100~101信息提示,表示请求已被成功接收,继续处理2XX200~206成功,表示请求已被成功接收、理解、接受3XX300~305重定向,要完成请求,必须进行更进一步的处理4XX400~415客户端错误,请求有语法错误或请求无法实现

◆ 常见的状态码:

名称释义200OK:服务器成功处理了请求(这个是我们见到最多的)301/302Moved Permanently(重定向):请求的URL已移走。Response中应该包含一个Location URL,说明资源现在所处的位置304Not Modified(未修改):客户的缓存资源是最新的,需要客户端使用缓存404Not Found:未找到资源401禁止访问501Internal Server Error:服务器遇到一个错误,使其无法对请求提供服务
★ 200(OK):

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

★ 204(No Content,没有内容)

返回的HTTP响应中只有一些Header和一个状态行,没有实体的主题内容(没有响应Body)。204状态码的作用如下。 (1)在不获取资源的情况下了解资源的情况(比如判断其类型)。 (2)通过查看HTTP响应中的状态码看某个对象是否存在。 (3)通过查看Header测试资源是否被修改

★ 206(Partial Content,部分内容)

206状态码代表服务器已经成功处理了部分GET请求(只有发送GET方法的HTTP请求,Web服务器才可能返回206)。206的应用场景如下。 (1)FlashGet、迅雷或者HTTP下载工具都是使用206状态码来实现断点续传的。 (2)将一个大文档分解为多个下载段同时下载,比如在线看视频。

★ 301(Moved Permanently)

服务器返回301的时候,表示请求的网页已经永久性地转移到另一个地址。在如下情况下需要用到301。 (1)防止用户输错域名。比如Google担心用户输错域名,就把其他类似的域名买下来,比如go0gle.com,然后重定向到www.google.com。 (2)网站更换域名。一些网站壮大后,会换个更好的域名。比如京东以前的域名是www.360buy.com,现在的域名是www.jd.com。 (3)有多个权重不错的域名,需要把所有的权重都传递到新域名上,这就需要301重定向了。如果不设置301,多个域名绑定在一个主机头上,会被搜索引擎认为是两个相同的站点,不利于网站的排名。绑定的域名越多,内容重复度也就越高,排名越低。

★ 302(Found)

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

★ 301和302的区别:

状态码301和302都是在Location中返回新的URL。两者的区别在于: (1)301 表示旧地址的资源已经被永久地移除了(这个资源不可访问了),搜索引擎会把权重算到新地址; (2)302 表示旧地址的资源还在(仍然可以访问),这个重定向只是临时地从旧地址跳转到新地址,搜索引擎会把权重算到旧地址。

★ 304(Not Modified)

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

★ 400(Bad Request)

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

★ 401(Unauthorized)

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

★ 403(Forbidden)

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

★ 404(Not Found)

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

★ 500(Internal Server Error)

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

★ 503(Server Unavailable)

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

最新回复(0)