常见状态码汇总

要知道错误码,首先要知道什么是状态码

状态码定义

接收到客户端请求的服务器,会将请求内容的结果以响应的形式返回。而响应报文基本上由协议版本,状态码原因短语,可选的响应首部字段及实体构成。因此状态码就是由服务器返回的描述返回的请求结果,借助状态码,用户可以知道服务器端时正常处理了请求还是出现了错误,原因短语用来解释状态码

状态码代表的响应状态

状态码的第一位数字决定了不同的响应状态

  • 1:指示信息类,表示请求已接受,继续处理(临时响应)
  • 2:指示服务器成功接受了客户端的请求
  • 3:指示重定向,表示要完成请求必须进行更近一步的操作
  • 4:指示客户端请求错误
  • 5:指示服务器错误

常见状态码

  • 100:继续,请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。客户端在发送POST数据给服务器前,征询服务器情况,看服务器是否处理POST的数据,如果不处理,客户端则不上传POST数据,如果处理,则POST上传数据。常用于POST大数据传输
  • 101:切换协议,请求者已要求服务器切换协议,服务器已确认并准备切换。在HTTP同意升级为webSocket时,如果服务器同意变更,就会发送状态码101
  • 200:成功,服务器已经成功处理了请求
  • 204:无内容,服务器成功处理了请求,但没有资源返回,即返回的响应报文不含实体的主体部分
  • 206:部分内容,表示客户端进行了范围请求,而服务器成功执行这部分的get请求,使用场景为HTTP的分块下载和断点续传,响应报文中包含由Content-Range指定范围的实体内容
  • 301:永久重定向,会缓存,请求的网页已永久移动到新位置。服务器返回此响应(对GET或HEAD请求的响应)时,会自动将请求者转到新位置
  • 302:临时重定向,不会缓存,服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求,常用于未登录的用户访问用户中心重定向到登录页面
  • 303:查看其它位置,表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源。功能和302类似,但明确表示客户端应该用GET方法获取资源
  • 304:未修改,协商缓存,告诉客户端有缓存,直接使用缓存中的数据。和重定向无关。表示客户端发送附带条件的请求时(指采用GET方法的请求报文中包含If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since中任一首部),服务器允许请求访问资源,但未满足条件的情况,返回时不包含任何响应的主体部分。
  • 307:临时性重定向,服务器目前从不同位置的网页响应请求,但请求者应继续使用原有的位置来进行以后的请求,与302含义相同,307遵照浏览器标准不会从POST变成GET,但每种浏览器可能出现不同状况
  • 400:错误请求,服务器不理解请求的语法,存在原因可能是
    1. 网速不稳定,而要求链接的网页存在FLASH或者大尺寸图片,造成响应过慢
    2. 服务器已关闭
    3. DNS服务器错误
  • 401:未授权,请求要求身份验证,若之前已经进行过一次请求,则表示用户认证失败。返回401的响应必须包含一个适用于被请求资源的WWW-Authenticate首部用于质询用户信息。对于需要登录的网页,服务器可能返回此响应
  • 403:禁止,服务器拒绝请求,服务器没有必要给出拒绝的详细理由
  • 404:未找到,服务器找不到请求的资源,也可以在服务器拒绝请求且不想说明理由时使用。
    产生原因:服务器找不到请求的资源
    1. 网页URL生成规则改变
    2. 网页文件更名或移动位置;地址错误(拼写不正确,字母大小写错误)
    3. 导入链接拼写错误
  • 500:服务器内部错误,服务器遇到错误,无法完成请求,
    产生原因可能是:程序的运行过程中出错。般为服务器运行不正常时提示,服务器端的网页程序设计有误
    1. servlet类没有继承HttpServlet或实现servlet接口
    2. web.xml文件中写错
    3. service方法中代码运行时抛出异常
  • 503:服务器不可用,服务器目前无法使用(由于超载或者停机维护)。服务器停机维护时,主动用503响应请求或nginx设置限速,超过限速会返回503

有301了,为什么还要有一个302

  • 301是永久重定向,搜索引擎在抓取新的内容的同时也将旧的网址替换为了重定向之后的网址
  • 302是临时重定向,搜索引擎会抓取新的内容而保留旧的地址,因为服务器返回302,所以,搜索搜索引擎认为新的网址是暂时的

304是多好还是少好

服务器为了提高网站访问速度,对之前访问的部分页面指定缓存机制,当客户端在此对这些页面进行请求,服务器会根据缓存内容判断页面与之前是否相同,若相同直接返回304,此时客户端调用缓存内容,不必进行二次下载。因此304并不表示错误,而是服务器端对客户端有缓存情况下的一种响应。
虽然使用缓存可以提高访问速度,降低服务器压力,但产生较多304表示页面与之前一直相同,原因可能是此页面更新周期长或不更新,也可能这个页面是静态页面或强制生成了静态html。搜索引擎蜘蛛更青睐内容源更新频繁的网站,所以一定时间都处于304的状态会导致蜘蛛降低对网站的抓取次数,弊端就出来了:收录减少,权重下降,网站快照停止

如果是304状态码了,如何让它变成200(304过程)

这个问题就涉及到304过程了

  1. 浏览器请求资源时首先命中资源的Expires 和 Cache-Control,Expires 受限于本地时间,如果修改了本地时间,可能会造成缓存失效,可以通过Cache-control: max-age指定最大生命周期,状态仍然返回200,但不会请求数据,在浏览器中能明显看到from cache字样。
  2. 强缓存失效,进入协商缓存阶段,首先验证ETag,ETag可以保证每一个资源是唯一的,资源变化都会导致ETag变化。服务器根据客户端上送的If-None-Match值来判断是否命中缓存。
  3. 协商缓存 Last-Modify/If-Modify-Since阶段,客户端第一次请求资源时,服务服返回的header中会加上Last-Modify,Last-modify是一个时间标识该资源的最后修改时间。再次请求该资源时,request的请求头中会包含If-Modify-Since,该值为缓存之前返回的Last-Modify。服务器收到If-Modify-Since后,根据资源的最后修改时间判断是否命中缓存。
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值