下面,继续谈一下HTTP响应头当中有哪些比较常见的属性。
目录
一、HTTP状态码(HTTP响应行当中的内容)
①状态码:200
②状态码:404
③状态码:403
④状态码:405
⑤状态码:500
⑥状态码:504:Gateway Timeout
⑦状态码:302:Move temporarily(临时重定向)
Location和Refer的区别就在于:
⑧状态码:301(永久重定向)
二、HTTP响应"报头"(header)
三、HTTP的1.1/2.0/3.0三个版本的对比
一、HTTP状态码(HTTP响应行当中的内容)
这一个状态码的含义,也在前两篇文章当中提到了。下面,介绍几个常见的状态码
①状态码:200
状态码显示200,说明浏览器很顺利地获取到想要的内容了,没有出什么bug。
②状态码:404
请求的资源不存在,这个时候就会提示404不存在。
③状态码:403
403提示当前资源存在,但是由于用户的权限不够,因此不可以访问。关于怎样校验权限,目前大部分是使用spring-security来校验权限。
④状态码:405
这个状态码的含义是:Method Not Allowed,这种状态比较少遇到。
例如:当用户使用get访问服务器,但是服务器的接口只支持post。
⑤状态码:500
这个状态码的含义是服务器内部出现错误。
例如在运行的时候出现了异常(Exception),那么就会显示500,也是不那么常见的情况。
在Tomcat启动之后,如果运行过程当中出现了异常,会经历以下4个步骤:
步骤1:如果异常位于try-catch代码块当中,就会按照catch代码块的逻辑来处理;
步骤2:如果在没有catch进行处理,那么这个异常就会沿着调用栈不断向上传递。
步骤3:如果在最顶层的Servlet当中依然没有处理的了,那么这个异常就会交给Tomcat来进行处理。
步骤4:如果Tomcat也没有办法处理,这个时候就会抛出500错误代码,然后把异常交给jvm进行处理,也就引发了程序的崩溃
⑥状态码:504:Gateway Timeout
指的是服务器当前太繁忙了,来不及响应。
⑦状态码:302:Move temporarily(临时重定向)
关于请求转发和重定向的区别,会在后续的文章当中讲到。‘
其中,登录跳转就是一个常见的重定向场景。
里面有一个字段,叫做Location:
其中,这一个字段的含义就是:需要跳转的资源在哪里
Location和Refer的区别就在于:
①Refer是HTTP请求头当中的内容,Location是HTTP响应头当中的内容。
②Refer描述的是当前页面是从哪里跳转过来的,而Location描述的是这个请求需要重定向到哪个页面。
⑧状态码:301(永久重定向)
301的状态码代表的含义是永久重定向
服务器的状态码有很多,总结一下:它们大致都有一下特点:
状态码 含义
2开头 表示响应成功
3开头 重定向
4开头 客户端出错(请求出错)
5开头 服务器内部出错
其中,1和6开头的状态码,都比较少见。
二、HTTP响应"报头"(header)
HTTP响应是由HTTP响应行,HTTP响应头,还有响应的正文一共3部分组成的。
前面我们也提到了:HTTP的响应头是由多组键值对组成的。下面,将来聊一下一个常见的键值对:Content-Type,它描述的是响应的body的格式,有以下几种常见的格式:
1) text/html:返回的是一个html页面
2) text/css:返回的是一个css页面
3) application/javascript:返回的是一个javascript页面
4)application/json:返回的是一串json格式的字符串
三、HTTP的1.1/2.0/3.0三个版本的对比
三、HTTP的1.1/2.0/3.0三个版本的对比
HTTP版本 连接方式 安全性 传输层协议 头部是否压缩 传输格 式 是否支持多路复用
HTTP1.0 短连接:一个连接对应一个请求 明文传输 TCP 否 纯文本 否
HTTP1.1
长连接:一个连接可以被同一个客户端多次请求复用;
支持管道传输:客户端可以发起多个请求,只要第一个
请求发出去了,不必等其回来,就可以发送第二次请求。
明文传输 TCP 否 纯文本 否
HTTP2.0 密文传输(基于HTTPS) TCP
是
如果你同时发出多个请求,他们的头是一样的或是相似的
(在客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,生成一个索引号,以后就不发送同样字段了,只发送索引号,这样就提高速度了。)
二进制
是:
使用一个进程/线程同时管理多个socket。会根据request的id号来完成请求的分发
HTTP3.0 UDP
————————————————