HTTP协议中,浅谈cookie与session的区别,与cookie网页登录原理


由于http协议是一种无状态协议,客户端(浏览器)向服务端发送请求,服务器收到请求后,就返回一条响应给客户端,中间没有记录过程

也就是说,在这种机制下,服务端不知道具体是哪个客户端请求了它(不会记录用户状态),只要收到了请求,就会返回一条响应给它,而这条响应不会是给特定用户的,这是http协议的一种无状态特性

那么,我们如果要浏览微博,知乎,淘宝等一些需要登陆的网站时,就需要每次都输入账号密码,但是事情不是这样,如今浏览器是如何做到记住账号密码,登陆过一次以后,下次就自动传入用户信息给服务器呢

当然,HTTP协议本身的机制无法做到,它是用一种叫 cookie 的用户信息储存机制,来储存特定用户信息

在你的浏览器第一次请求这些网站时,客户端(浏览器)就会生成一个带有你的用户信息的cookie,然后把这个cookie,放在请求信息里一起发送服务器(网站)

当下次再次请求的时候,cookie里的用户信息,会自动地传递给服务器,所以,如果你把浏览器里的cookie都删除的话,登陆网站就需要重新输入用户信息

cookie机制的出现,让客户端的请求能带上特定的用户信息,不必再重复输入,让我们浏览网站方便且快捷,但是,像淘宝这种购物网站,由于http的无状态,当你把商品加入购物车的时候,就相当于开启了一个新的会话(一个请求对应一个新对话), 服务器 无法知道是哪个用户操作的

这个时候,就需要session来发挥作用,session是用来跟踪用户状态的,也就是说,session生成在服务器端,它是一个对应特定用户的唯一标识,当你把商品加入购物车时,服务器会生成一个session,然后传到客户端,当下次你再加入商品时,客户端会把这个session id放在cookie里,一起发送给服务端,这样服务器才通过session id来知道你是谁,并且你都做了什么事(个性化操作)

所以,cookie是一种储存用户信息的机制, 服务器通过在 HTTP 的响应头中加上一行特殊的指示 以提示 浏览器按照指示生成相应的 cookie 。然而纯粹的客户端脚本如 JavaScript 或者 VBScript 也可以生成 cookie cookie储存在客户端,虽然经过加密,但是还是很容易被黑客截获,当然,如果黑客愿意的话

session是储存在cookie里的, 而session则是服务器端生成的,用于跟踪特定用户状态的一种标识,session对象只存在于一次会话中,而session id会储存在服务端

其实说白了session就是用来保存会话的cookie,因为session能把上下报文联系起来,放在一次会话中,也就实现了购物车的功能

客户端浏览器可以通过cookie保存session id,但是cookie可以被浏览器禁止。
还有一种url重写的技术,就是把session id直接附加在URL路径的后面。
还有一种表单隐藏字段技术,就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。



cookie网页登陆原理


客户端(浏览器)把表单数据封装到HTTP请求中,发送给服务器端,服务器端先检查是否勾选“记住用户”,如果勾选了,就在响应头里加入cookie信息(也就是字符串),把用户的基础信息放到这个字符串里,然后再把这个响应发送给客户端,客户端再根据这些cookie信息,生成一个cookie并且储存起来

然后当用户再一次在同一台电脑里,访问同一个网站时,浏览器(客户端)就会检查是否有cookie存在,如果有,就把cookie封装在请求头中访问服务器,服务器端就会返回一个加载过用户信息的html页面给浏览器,这就是网页登录的原理


如有不妥,或者错误的地方,请各位大神指教,感激不尽

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值