理解http的无状态首先要明白什么是“状态”,这个很重要。
我们知道http是请求应答模式的。请求肯定是客户端发起的,应答是服务端的响应。客户端和服务端交互活动的信息成为状态信息。如果这个状态信息被保存维护到了服务器,那么这个服务器就被叫做有状态服务器,因为有了这些保存信息就可以通过此信息影响之后的交互,比如用户的登陆转态,我第一次请求告诉服务端我要登陆了,服务端保存好了登陆信息,下一次请求过来的时候因为服务端知道这是登陆态,所以对这次请求会做出相应的影响。也就是说这次请求依赖于上一次的请求。
所谓无状态指的是,每一次请求都应该是独立的,即他的执行结果和前面的请求以及后面的请求都应该是没有关系的,他不会受前面请求应答情况的直接影响,同时也不会影响之后的请求应答。
那么cookie和session是否就是反无状态呢?我觉着这个要看怎么用,比如我仅仅把cookie当做一个数据传过去,而服务端只负责解析cookie而不去设置cookie,当然了下一次请求也不该带有这个cookie,这样的一个http也应该是无状态的,不过话说回来了,如果这样的话为何设置cookie?直接用一个参数传过去不就得了。session就肯定是有状态的,因为session设置的同时,服务器必须会往浏览器种一个cookie,浏览器的下次请求势必会带上这个cookie,这就对下一次的请求应答造成了影响。所以啦,cookie和session的设计就是为了有状态的,不必纠结了。
时间: 2024-10-09 18:40:16