HTTP状态码

HTTP状态码负责表示客户端HTTP请求的返回结果。

状态码的响应类别有以下5种。
状态码的类别,如下表:

状态码 类别 原因短语
1XX 信息性状态码 接收的请求正在处理
2XX 成功状态码 请求正常处理完毕
3XX 重定向状态码 需要进行附加操作以完成请求
4XX 客户端错误状态码 服务器无法处理请求
5XX 服务器错误状态码 服务器处理请求出错

2XX成功

表明请求被正常处理

200 OK

在响应报文中,随状态码一起返回的信息不是固定的,会随方法的不同而改变。
eg:GET 方法时,对应的URI资源实体作为响应返回。HEAD 方法的时候,响应中只返回首部,不返回实体的主体部分。

204 Not Content

该状态码表明请求已成功处理,但是响应报文不包含实体的主体部分,也不允许返回任何实体的主体。
204 响应,浏览器显示的页面不进行刷新。
204 常用于客户端往服务器发送信息,而对客户端不需要发送新信息内容的情况下使用。
这跟上面的200 不返回实体是不一样的。200 Head 不返回实体,浏览器的URL会变化,页面会跳到白板页面。

206 Partial Content

客户端进行范围请求。响应报文包含Content-Range指定范围的实体内容。

3XX 重定向

301 Moved Permanently

永久性重定向,请求的资源已被分配了新的URI。以后使用资源现在所指的URI.
如果你做了个新站,而你原来那个旧网站用不了了,你又不想原来那个网站辛辛苦苦搞起来的权重白白浪费了,这时你要怎么办呢?这个时候你就要用到301了!

302 Found

临时性重定向。希望本次使用新的URI访问。
eg:用户把URI保存到书签,但不会像301状态码出现时那样去更新书签,而是仍旧保留返回302状态码的页面对应的URI

303 See Other

该状态码表示由于请求对应的资源存在另外一个URI,应使用Get方法定向获取请求的资源。
303和302的相同的功能,但是303状态码明确表示客户端应当采用Get方法获取资源。

  • 当301 302 303响应状态码返回,几乎所有的浏览器都会把Post改成Get。删除报文内的主体,之后请求会自动再次发送。301 302标准是禁止将POST改为GET方法,但是实际上使用时大家都会这样做

304 Not Modified

304 状态码跟重定向没有关系,该状态码表示客户端发送附带条件请求时,服务器允许访问资源,但未满足条件的情况。304返回时,未包含任何响应的主体部分。 附带条件是指采用GET方法的请求报文中包含If-Match,If-Range等。

307 Temporary Redirect

临时重定向,跟302 Found状态码相同。但是307状态码会遵照浏览器标准,不会从Post变成Get

4XX 客户端错误

400 Bad Request

该状态码表示请求报文中存在语法错误,服务端无法理解。需修改请求的内容后再次发送请求。

401 Unauthorized

该状态码表示发送的请求需要有通过HTTP认证的认证信息。
客户端发送请求—>服务器返回401—>页面弹出认证信息—>填写认证信息—>服务器再次返回401—>说明认证失败。

403 Forbidden

该状态码表明对请求资源的访问被服务器拒绝。服务端没有必要给出拒绝的详细理由。但是可以在实体的主体部分看到原因描述。
eg:未获得文件系统的访问授权,访问权限出现问题(从未授权的发送源IP地址试图访问)会发生403

404 Not Found

服务器上无法找到请求的资源。

5XX 服务器错误

500 Internal Server Error

该状态码表明服务器端在执行请求时发生错误

503 Service Unavailable

表明服务器暂时处理超负荷或正在进行停机维护,无法处理请求。