最近在找工作,遇到一些面试的问题,觉得有必要记录一下笔记,平时坐车的时候可以翻阅巩固一下!
http状态码是两次面试都有遇到过,答得也不是很全面,所以淘了一下,也跟大家分享一下。
什么是状态码
当发送一个请求时,服务器响应会包含一个状态码,这个状态码代表请求的结果,由3位数字组成。
状态码有哪些
状态码总共被分为5大类
1开头 100-101 信息提示(表示临时响应并需要请求者继续执行操作的状态代码)
2开头 200-206 成功(表示成功处理了请求的状态代码)
3开头 300-305 重定向
4开头 400-415 客户端错误(这些状态代码表示客户端请求可能出错,服务器无法处理)
5开头 500-505 服务器错误(服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身要做响应时出错,而不是请求出错)
常见状态码
200 OK 服务器成功处理了请求
201 Created 请求成功且服务器已创建了新的资源(上传文件的时候会返回这个状态)
301 Moved Permanently/302 Found(重定向)请求的URL已移走。Response中应该包含一个Location URL, 说明资源现在所处的位置,301是永久重定向,如果不清除浏览器缓存,之后如果不重定向一样会重定向,302是暂时重定向,以后不取消重定向,浏览器就不会自动跳转。
304 Not Modified(未修改)客户的缓存资源是最新的, 要客户端使用缓存,上段说到3开头是重定向,应该是告诉浏览器重定向到本地缓存,你可以试一下,改变下服务器的响应输入并且返回304,然后在浏览器查看一下response的内容,其实是旧的内容。我了解的判断是否是最新的一般是通过请求头上的If-None-Match跟服务器的ETag是否匹配,或者是通过请求头If-Modified-Since跟服务器Last-Modified进行匹配,不一致就是服务器有更新,需要返回200,一致就返回304。
401 Unauthorized 未授权 (请求要求身份验证,对于需要登录的网页,服务器可能返回此响应)
403 Forbiden 拒绝(服务器拒绝请求)
404 Not Found 未找到资源(客户端输入请求url是不存在)
500 Internal Server Error 服务器内部错误(服务器遇到错误,无法完成请求,可能是程序发生错误,执行到一半发生异常没有处理)
501 Not Implemented 尚未实施(如果请求的方法错误时,可能会出现状态)
502 Bad Gateway 错误网关 (服务器作为网关或代理,从上游服务器收到无效响应,例如nginx代理到php,php没有开启的时候,会出现502错误)
503 Service Unavailable 服务不可用服务器目前无法使用(由于超载并发数超出范围、停机维护,一般只是暂时的)
504 Gateway Timeout 网关超时 (服务器作为网关或代理,但是没有及时从上游服务器收到请求,参考502)
最后
还有一些状态码现在没有遇到,1开头的看了资料也不太理解怎么产生的,如果你看到这篇文章,可以一起交流。也希望整理到这部分http状态码对你以后的工作有所帮助,一起学习交流。