HTTP状态码
约 1075 个字 预计阅读时间 4 分钟
HTTP状态码负责表示客户端HTTP请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作
类别 | 原因短语 | 描述 |
---|---|---|
1XX | Informational(信息性状态码) | 接收的请求正在处理 |
2XX | Success(成功状态码) | 请求正常处理完毕 |
3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 |
5XX | Server Error(服务器错误状态码) | 服务器处理请求出错 |
## 2xx成功 |
200 OK
表示正常处理
204 NO content
表示没有资源可以返回,但是服务器已经成功处理请求,浏览器页面不更新
206 Partial Content
表示范围请求被成功执行
3xx重定向
表明浏览器需要执行某些特殊的处理以正确处理 请求
301 Moved Permanently
永久性重定向.该状态码表示请求的资源已被分配了新的URI,以后应使用资源现在所指的URI.
也就是说,如果已经把资源对应的URI
保存为书签了,这时应该按Location
首部字段提示的URI重新保存.像下方给出的请求URI,当指定资源路径的最后忘记添加斜杠 “/”,就会产生301状态码
http://example.com/sample
302Found
临时性重定向,表示请求的资源被分配了新的URI,希望本次能使用新的URI
和301 Moved Permanently
状态码相似,但 302
状态码代表的资源 不是被永久移动,只是临时性质的.换句话说,已移动的资源对应的 URI 将来还有可能发生改变
303 See other
该状态码表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源
303 状态码和302 Found状态码有着相同的功能,但303状态码明 确表示客户端应当采用GET方法获取资源,这点与302状态码有区别
比如,当使用POST方法访问CGI程序,其执行后的处理结果是希望客户端能以GET方法重定向到另一个URI上去时,返回303状态码.虽然302 Found 状态码也可以实现相同的功能,但这里使用303状态码是最理想的
304 Not Modified
找到了资源,但是不符合条件请求(此时记客户端会发送附带条件的请求)
307 Temporary Redirect
临时重定向,和302类似.会遵照浏览器标准不会送POST变成GET
4XX 客户端错误
400 Bad Request
表示报文存在语法错误,需要再次发送请求,此外浏览器回想200ok一样对待该状态码
401 Unauthorized
但需要认证的时候,第一次返回401跳出认证界面,第二次返回401就是认证失败
403 Forbidden
该状态码表示对请求资源的访问被服务器拒绝了,服务器端没有必要给出拒绝的详细理由,如果想作说明的话,可以在实体的主体部分对原因进行描述,这样就可以让用户看到了
未获得文件的访问授权,访问权限出现某些问题,从未授权的发送源IP试图访问等情况都是可能发生403的原因
404Not Found
表示服务器找不到请求的资源,也可能就拒绝请求且不想说明理由时使用
5XX服务器错误
表示服务器本身发生错误
500 Internal Server Error
服务器执行请求时发生了错误,可能是web应用存在的bug或者是某些临时的故障
503 Service Unavailable
表示服务器出于超负载或者在停机维修,无法请求数据,如果事先得知解除以上状态需要的时间,最好写入Retry-After,首段字符返回给客户端
状态码和状况的不一致
不少返回的状态码响应都是错误的,但是用户可能察觉不到这点。比 如Web应用程序内部发生错误,状态码依然返回200 OK,这种情况也经 常遇到