http无状态学习

http是什么

要了解http的无状态性首先我们要了解什么是http,http是hyper text transfer protocol的缩写,http协议支持着超文本传输的协议。超文本传输就是我们编写的html代码页.
http的无状态性
http协议既然是支持超文本的传输,也就是说是web端向服务端发送请求,服务端返回所请求的数据的这么个过程。一般而言一个url对应的是一个超文本,http服务器又是绝对公平的他只根据url返回同一超文本。那么我们需要是请求的结果,记录用户行为变得毫无意义,因此http协议被设计为无状态的连接协议。
http无状态性的变迁
随着时间的推移,人们逐渐发现静态的html着实乏味,已经不能满足人们的需要,只有增加新的动态内容才能让web变得更加生动有趣有用。html的语法开始不断的发展革新,开始增加了单(from)、脚本、dom等处理功能服务端相对应的出现了cgi(通用网关接口)来处理表单提交的动态内容。随着客户端和服务端的这种动态程序的出现,http协议的无状态性就严重的阻碍了这种程序的出现,因为这种动态程序的链接是需要为保持会话的状态,http协议的无状态性恰恰满足不了这种发展,于是一种新的技术应运而生,那就是存储用户状态信息的cookiesession
cookie是通过客户端保持状态的,也就是说当客户端访问一个支持cookie的网站的时候,客户端将会把用户的信息提交给服务端,服务端接收到客户端请求的超文本以后就会返回相应的超文本给客户端其中包含有用户的信息,但是用户信息不是存放在http的响应体response body中而是存放http的响应头response header中。当客户端接收到服务端发回的信息以后会将这些信息存放在一个统一的位置,然后客户端再次对服务端发起请求的时候就会再次吧相应的cookie再次发回给服务端,这些用户信息将会存放在http请求体request header中。这样用户就不用再重复的输入用户的信息,减少了很多不必要的麻烦。
与cookie相对应的另外一个解决方案是session,session是通过服务端保持会话,我们把服务端和客户端的交互动作称之为session,session在服务端为存储客户端的信息而开辟了一个空间其中保存的便是要保持会话状态的用户信息,对于session的创建不同的语言有不同的创建方法!session被创建以后会生成唯一的sessionid,我们可以调用session的不同方法往session里增加内容!用户再次请求的信息也会在session里进行判断。
于是cookie和session就联合起来比较完美的保持了会话链接,当用户首次请求服务器会向其发送包含用户信息的超文本,服务端会创建session用于存储用户信息,然后session会自动生成一个sessionid,然后和返回的请求内容一起发回给客户端!客户端会将这些信息存储在客户端[系统盘]:\Documents and Settings\[用户名]\Cookies中,当用户再次访问服务端的时候会将存储在客户端的sessionid连同请求的超文本发送给服务端,服务端在接受到请求以后会首先通过sessionid判断用户信息并再次把sessionid和请求的内容返回给用户。
至此我们了解了http协议本身的无状态性,但为了客户端和服务端的交互,我们就需要存贮记录这种状态,这就出现了cookie和session。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值