就在今天,2015年5月28日,中国最大的旅游机票预订网站--携程网粗大事了。据传携程网的数据库被人物理删除了,而容灾备份的数据又无法正常使用,服务器全面遭受瘫痪。每小时给携程带来的损失约100万美元。巴拉巴拉,作为中国最大的.Net互联网公司,携程出了这样的事情真是不应该(技术人员:怪我咯)。
转入正题当我们打开携程首页会看到这样一个错误页面:
在页面的下方我们会看到404这样一串数字。
其实在我们打开一些小网站时,常常会遇到这样一串数字,这些数字是我们进行http请求时,服务端给出的响应结果。
这些响应结果,全部为三位数字的十进制数组成,根据百位数的不同可以分为5类:
1XX:这个响应是临时响应,表示已经收到请求,并要求请求者继续操作。
2XX:表示请求方发出的请求服务端已经成功处理。
3XX:重定向,表示客户端发出的请求服务端已经收到,但是如果想要完成请求,服务端还需要客户端进一步操作。
4XX:客户端错误(客户端的请求错误),表示请求包含的语法错误,或者说客户端的请求无法实现
5XX:服务端错误,这个错误表示服务端出现了问题,无法做出正确的操作,出现这种错误的原因可能是因为服务器本身的问题,而不是客户端的请求出错了。
很明显携程的错误时属于第四种,客户端的请求出错了,但是具体是什么错误,我们还要查看具体的响应码,下表罗列了一些常用的响应码(标红字体为最常出现的几种响应码):
505
响应码 key | 含义 value | comments |
100 | continue | 继续: 服务器已经收到请求的第一部分,请发送剩余部分的请求 |
101 | switch protocols | 切换协议:请求者发出的切换协议请求,服务端已经收到并确认准备切换 |
200 | 正常,请求已完成。通常表示服务器提供了请求的网页 | |
201 | 已创建,请求成功,并且服务器已经创建了该资源 | |
202 | 服务端已经接受处理,但是处理尚未完成 | |
203 | 服务端已经成功处理了请求,但是应答可能来自于另外一个来源 | |
204 | 服务器已经正常处理了响应,但是没有需要返回的内容 | |
300 | 客户端请求的文档可以在多个地方找到,路径在返回文档中列出 | |
301 | 请求的网页已经永久的放置到了新的位置,服务端将会将请求转向新的位置,新的url会在location头中给出,浏览器会自动跳转 | |
302 | 与301类似,但是请求的网页放置的位置是临时的 | |
303 | 与301、302类似。只是重定向时,指明一些资源需要通过GET形式来获取 | |
304 | 服务端保存的资源与之前客户端请求时,并未发生改变。客户端缓冲的资源还可以继续使用,故不再返回网页内容 | |
305 | 客户端请求资源只能通过指定的代理服务器来获取,同时会返回指定的代理服务器的地址 | |
400 | 错误的请求,服务器不理解客户端的请求语法 | |
401 | 未授权,客户端不具备访问该资源的权限,需要进行身份认证,一般出现在需要登录的界面 | |
403 | 拒绝请求 , 客户端的请求被服务端拒绝 | |
404 | 找不到请求的资源,客户端提出的请求,服务端无法在指定位置找到资源 | |
405 | 禁用指定中所请求的方法,如在前文(点击这里)中提到的 POST PUT等动作 | |
407 | 类似于401,但是客户端需要在代理服务器进行身份认证 | |
500 | 由于服务器内部错误,无法完成客户端的请求 | |
501 | 未执行,服务端并不支持实现请求所需要的功能,如服务端不支持客户端的DELETE请求 | |
502 | 网关错误,指服务器作为中转,请求上游的服务器时得到了错误的响应,此时向下游返回该错误 | |
503 | 服务暂时不可用,一般会出现在服务器超载(如数据库连接),或者数据库维护期间 | |
504 | 网关超时,和502类似,只是在等待上游做出响应时,等待超时,向下游返回该结果 | |
505 | 服务器不支持请求中的http的版本 |