【计算机网络】HTTP状态码

上节讲了HTTP报文,在响应报文状态行中有一个很关键的字段——状态码,状态码后面紧跟着原因短语。根据状态码我们就能知道服务器是否正常处理了请求,或者是出错了。

插图来源《图解HTTP》

状态码一个三位数字,第一位指定了相应类别,后两位无分类。响应类别主要有以下五种:

在这五种类别下的HTTP状态码超过40种,但实际上我们常见到的大约只有10种,所以我们就大致了解一下常见的状态码就可以了。

2XX 成功

200 OK:最常见的就是正常情况下的200,表示从客户端发来的请求被服务器端正常处理了;

204 No Content:表示服务器已经成功接收并处理了客户端的请求,但在返回报文中不存在实体内容部分,一般这类请求就是单方面的向服务器发送信息,并不需要得到返回数据,类似于单相思-。-

3XX 重定向

301 Moved Permanently:永久性重定向。表示请求的资源被分配了新的URL,以后应使用资源现在所指的URL。简单的说就是你背下了一个网站地址,也可能是保存到了收藏夹里,但突然某一天,这个网站的域名换了,你再去点击这个收藏夹,响应报文中就会出现这个状态码,告诉你这个地址已经被永久性重定向到另一个地址了,一般来说浏览器地址栏的URL会切换到新的URL;

302 Found:临时重定向。表示请求的资源被分配了新的URL,希望用户(本次)能使用新的URL访问;跟上面301的区别就是,浏览器对此次的请求不会跳转到新的URL上,还是显示你所输入的URL,但网页内容是新URL的内容,表示这只是临时的重定向。这就造成了可能出现URL劫持的情况发生;

4XX 客户端错误

403 Forbidden:未获得访问权限。表示客户端对请求资源的访问被服务器拒绝了,例如客户端的IP地址不在服务器端的允许访问白名单中;

404 Not Found:没有找到资源对象。被很多程序猿吐槽为找不到对象,一般来说要检查下是否是URL地址输错了。另外如果服务器端拒绝了你的请求且不想说明原因的时候也可以返回这个状态码;

5XX服务器错误

500 Internal Server Error:500错误出现的原因有很多,但归根结底都是服务器内部错误,可能是服务器环境出错了;

502 Bad Gateway:服务器网关错误,出现这个错误的原因往往跟网络请求有关,服务器正在承受过载的网络请求,导致你的请求超时了。客户端可以尝试清除缓存刷新重新请求,如果继续报错502,则需要程序猿优化下网络请求比如升级带宽或负载均衡等,或者检查是否出现了大量的恶意访问;

503 Service Unavailable:服务不可用。表示服务器暂时不可用或者CPU超负荷了,导致请求无法被处理。如果不是停机维护的话,你就需要检查下是否是服务器遭到了DDoS攻击了,或者是程序没写好导致占用了过多的php线程,这时候你就需要优化下程序了;

504 Gateway Timeout:网关超时。简单的说就是请求超时了,原因可能有很多,但一般来说这种情况都是临时的,最简单粗暴的理解就是服务器端....网速差....如果频繁出现这个问题,这时候程序猿可能需要去联系一下服务器供应商解决这个问题。

作者的话:

其实这些问题在出现的时候再去网上搜索一下也能马上了解,但一般出现5XX错误时候都需要好好重视一下。我把大致原因整理成文字,闲暇时间自己回顾下加深下记忆,做到烂熟于胸。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190221G1COE700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券