【Java-Web】Session&Cookie-概念

举报
huahua.Dr 发表于 2020/12/14 20:20:32 2020/12/14
【摘要】 什么是Session与Cookie?简单来讲,它们其实就是HTTP中的一个配置项,在Servlet中其实就是对应一个类而已。

什么是SessionCookie

简单来讲,它们其实就是HTTP中的一个配置项,在Servlet中其实就是对应一个类而已。

1. Cookie

Cookie可以理解是客户端浏览器通过HTTP来访问服务端的一个沟通辅助工具;存在于HTTP的响应头Header里面,因为HTTP是无状态的,也就是说用户客户端发起一个HTTP请求结束后就不会保存任何信息,服务端也不知道下一次请求是不是上一次请求的用户;使用Cookie可以让HTTP变得“有状态”,怎么实现的呢,用户客户端发起一个HTTP请求的时候,到达服务端后,服务端会将一些Key/Value键值对数据响应给用户客户端,客户端使用Cookie将这些键值对数据保存起来,下一次HTTP请求就将COokie保存的键值对数据一起发送给服务端,服务端就可以根据这些Cookie数据是识别访问的用户,从而可以根据用户来划分访问了。

就像在一个店里办会员卡一样,第一次办会员卡是,上面会有记录一些个人信息,下一次带会员卡去连锁店里消费的时候,会自动识别你的会员卡,并自动帮你打折。

Cookie属性值

版本

属性项

设置响应头

Version0

属性项

描述

NAME=VALUE

键值对,可以设置要在客户端保存的键值对(NAME不能和其他的属性项相同)

Expires

过期时间,到了设置的时间点后该Cookie将会失效

Domain

生成该Cookie的域名

Path

Cookie是在哪个路径下生成的

Secure

如果设置该属性,那么只有是SSH连接才会将Cookie回传服务端

Set-Cookie

Version1

属性项

描述

NAME=VALUE

Version0

Damain

Vesion0

Path

version0

Secure

version0

Comment

注释项,说明Cookie的用途

CommentURL

注释项。说明URI

Version

是否需要符合RFC2965规范,通过SetCookie2必须符合,通过SetCookie设置为0则不需要符合,为1则必须符合

Discard

是否在回话结束后丢弃改Cookie项,默认为false

Max-age

最大失效时间,与Expires不同的是,设置多少秒之后失效

Port

Cookie在什么的端口下回传服务,如果有多个端口,则分号隔开。

Set-Cookie2

2. Session

Session的出现是为了解决使用cookie所带来的问题:客户端每次HTTP请求都发送cookie数据给服务端,如果cookie数据很多,会增加HTTP数据传输量的压力。

解决这个问题的办法是:客户端每次HTTP请求携带的Cookie只需要携带一个sessionID给服务端就可以了,服务端根据这个ID去查询服务端存储的交互数据(也就是session数据)。这样客户端只需要存储和发送一个sessionID,服务端做交互数据存储就解决这个问题了。

session的工作方式:

1)基于请求URL上携带的K-V参数

2)基于HTTP请求头携带的Cookie

3)基于SSL配置属性值SessionID

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。