在我们向服务器发送一个HTTP请求时,会经历tcp连接(三次握手),发送HTTP请求,服务器返回HTTP响应,浏览器对响应中的状态码进行分析判断,来确定请求是否成功,是否成功得到我们需要的信息。
那么,对于服务器返回的常见状态码,浏览器会怎样应对呢?
1xx:是预留给协议的
2xx:是表示请求成功的
3xx:是表示重定向的
4xx:是客户端错误的
5xx:是服务器端错误的
常见状态码:
2xx
200:Success。请求成功。
3xx
301:永久重定向。当返回的状态码是301时,浏览器需要重新发送一个HTTP请求,到服务器返回的新地址。
重定向的原因:
是为了保持并提高该网站在搜索引擎的排名。两个不同的url地址被服务器认为是两个不同的网站,当一个网站因为某些原因变更了他的url,为了保持住他原来的排名,他会在原先的url的服务器做一个设置,当有用户访问该网站时(使用旧的url),服务器会返回一个301和一个新的url地址,这样浏览器收到这个状态码,便会自动继续使用新的url发送HTTP请求。
302:临时重定向。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。
303:临时重定向。响应可以在另一个url上被找到,并且客户端应以GET的方式访问那个资源,同时,303禁止被缓存;当然,第二个请求(重定向)可能被缓存(如果没有设置禁止缓存)。
304:禁止包含消息体,文档内容(自上次访问以来或根据请求条件)并没有改变。
305:使用代理。
307:临时重定向。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。PS:部分浏览器不能识别307。
临时重定向和永久重定向的区别:
临时重定向的旧url以后还会用,只是暂时用别的url代替;永久重定向是旧url不再使用,被新的url代替。
4xx
400:错误请求,语法或参数有误。
401:未授权。
403:禁止,拒绝请求。
404:Not Found。没有找到该页面。
5xx
500:服务器内部错误。
501:不支持当前请求所需要的某个功能。
502:错误网关。
503:服务器不可用(超载或停机维护),只是暂时不可用。
504:网关超时。
505:HTTP版本不受支持。
更多HTTP状态码的详细解释:传送门