HTTP协议基本知识有哪些
本篇内容主要讲解"HTTP协议基本知识有哪些",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"HTTP协议基本知识有哪些"吧!
HTTP工作原理
1. 用户通过浏览器进行了一个操作,比如输入网址并回车,或者是点击链接,接着浏览器获取了这个事件。2. 浏览器向服务端发出 TCP 连接请求。3. 服务程序接受浏览器的连接请求,并经过 TCP 三次握手建立连接。4. 浏览器将请求数据打包成一个 HTTP 协议格式的数据包。5. 浏览器将该数据包推入网络,数据包经过网络传输,最终达到端服务程序。6. 服务端程序拿到这个数据包后,同样以 HTTP 协议格式解包,获取到客户端的意图。7. 得知客户端意图后进行处理,比如提供静态文件或者调用服务端程序获得动态结果。8. 服务器将响应结果(可能是 HTML 或者图片等)按照 HTTP 协议格式打包。9. 服务器将响应数据包推入网络,数据包经过网络传输最终达到到浏览器。10. 浏览器拿到数据包后,以 HTTP 协议的格式解包,然后解析数据,假设这里的数据是 HTML。11. 浏览器将 HTML 文件展示在页面上。那我们想要探究的 Tomcat 和 Jetty 作为一个 HTTP 服务器,在这个过程中都做了些什么事情呢?主要是接受连接、解析请求数据、处理请求和发送响应这几个步骤。这里请你注意,可能有成千上万的浏览器同时请求同一个 HTTP 服务器,因此 Tomcat 和 Jetty 为了提高服务的能力和并发度,往往会将自己要做的几个事情并行化,具体来说就是使用多线程的技术。
Tomcat做了主要是接受连接、解析请求数据、处理请求和发送响应这几个步骤。HTTP协议更具体的以后我会在网络协议分类中具体总结。
Cookie 和 Session
HTTP 协议有个特点是无状态,请求与请求之间是没有关系的。Cookie 是 HTTP 报文的一个请求头,Web 应用可以将用户的标识信息或者其他一些信息(用户名等)存储在 Cookie 中。用户经过验证之后,每次 HTTP 请求报文中都包含 Cookie,这样服务器读取这个 Cookie 请求头就知道用户是谁了。Cookie 本质上就是一份存储在用户本地的文件,里面包含了每次请求中都需要传递的信息。
由于 Cookie 以明文的方式存储在本地,而 Cookie 中往往带有用户信息,这样就造成了非常大的安全隐患。Session 可以理解为服务器端开辟的存储空间,里面保存了用户的状态,用户信息以 Session 的形式存储在服务端。当用户请求到来时,服务端可以把用户的请求和用户的 Session 对应起来。浏览器在 Cookie 中填充了一个 Session ID 之类的字段用来标识请求。具体工作过程是这样的:服务器在创建 Session 的同时,会为该 Session 生成唯一的 Session ID,当浏览器再次发送请求的时候,会将这个 Session ID 带上,服务器接受到请求之后就会依据 Session ID 找到相应的 Session,找到 Session 后,就可以在 Session 中获取或者添加内容了。而这些内容只会保存在服务器中,发到客户端的只有 Session ID,这样相对安全,也节省了网络流量,因为不需要在 Cookie 中存储大量用户信息。Session是在服务器端程序运行的过程中创建的,不同语言实现的应用程序有不同的创建 Session 的方法。在 Java 中,是 Web 应用程序在调用 HttpServletRequest 的 getSession 方法时,由 Web 容器(比如 Tomcat)创建的。Tomcat 的 Session 管理器提供了多种持久化方案来存储 Session,通常会采用高性能的存储方式,比如 Redis,并且通过集群部署的方式,防止单点故障,从而提升高可用。同时,Session 有过期时间,因此 Tomcat 会开启后台线程定期的轮询,如果 Session 过期了就将 Session 失效。
cookie跨域: cookie有两个重要属性:domain字段 :表示浏览器访问这个域名时才带上这个cookie;path字段:表示访问的URL是这个path或者子路径时才带上这个cookie。跨域说的是,我们访问两个不同的域名或路径时,希望带上同一个cookie。
Cookie属性:
name字段:一个cookie的名称
value字段:一个cookie的值
domain字段:可以访问此cookie的域名
path字段:可以访问此cookie的页面路径
Size字段:此cookie大小
http字段:cookie的httponly属性,若此属性为True,则只有在http请求头中会有此cookie信息,而不能通过[xss_clean]来访问此cookie。
secure字段:设置是否只能通过https来传递此条cookie。
expires/Max-Age字段:设置cookie超时时间。如果设置的值为一个时间,则当到达该时间时此cookie失效。不设置的话默认是session,意思是cookie会和session一起失效,当浏览器关闭(并不是浏览器标签关闭,而是整个浏览器关闭)后,cookie失效。
到此,相信大家对"HTTP协议基本知识有哪些"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!