介绍会话技术、Cookie的API、详解、应用

举报
斌哥来了 发表于 2021/07/26 20:42:10 2021/07/26
【摘要】 什么是会话技术 基本概念 : 指用户开一个浏览器,访问一个网站 , 只要不关闭该浏览器,不管该用户点击多少个超链接,访问多少资源,直到用户关闭浏览器,整个这个过程我们称为一次会话 . 为什么我们要使用会话技术? 会话跟踪技术可以解决我们很多很多问题。 ( 1 ) 在论坛登陆的时候, 很多时候会有一个小框框问你是否要自动登陆,当你下次登陆的时候就不用输入密码了 (2) 根据...

什么是会话技术

基本概念 : 指用户开一个浏览器,访问一个网站 , 只要不关闭该浏览器,不管该用户点击多少个超链接,访问多少资源,直到用户关闭浏览器,整个这个过程我们称为一次会话 .




为什么我们要使用会话技术?

会话跟踪技术可以解决我们很多很多问题。

1 在论坛登陆的时候, 很多时候会有一个小框框问你是否要自动登陆,当你下次登陆的时候就不用输入密码了

(2) 根据我以前浏览过的商品,猜我喜欢什么商品



会话跟踪技术有 Cookie Session Cookie 技术是先出现的 。我们先讲 Cookie 技术吧。




什么是 Cookie

Cookie 是由 W3C 组织提出,最早由 netscape 社区发展的一种机制

(1)网页之间的 交互是通过HTTP协议传输数据的, 而Http协议是 无状态的协议 。无状态的协议是什么意思呢? 一旦数据提交完后,浏览器和服务器的连接就会关闭,再次交互的时候需要重新建立新的连接

(2)服务器无法确认用户的信息,于是乎,W3C就提出了: 给每一个用户都发一个通行证,无论 谁访问 的时候都需要携带通行证,这样服务器就可以从通行证上确认用户的信息 。通行证就是Cookie


Cookie 的流程:浏览器访问服务器, 如果服务器需要记录该用户的状态,就使用 response 向浏览器发送一个 Cookie ,浏览器会把 Cookie 保存起来。当 浏览器再次访问服务器的时候,浏览器会把请求的网址连同 Cookie 一同交给服务器


Cookie API

1 Cookie 类用于 创建一个 Cookie 对象

2 response 接口中定义了一个 addCookie 方法,用于在响应 头增加 一个相应的 Set-Cookie 头字段

3 request 接口中定义了一个 getCookies 方法,它用于获取客户端提交的 Cookie

常用的 Cookie 方法:

1 public Cookie(String name,String value)

(2) setValue getValue 方法

(3) setMaxAge getMaxAge 方法

(4) setPath getPath 方法

(5) setDomain getDomain 方法

(6) getName 方法


简单使用Cookie

创建Cookie对象,发送Cookie给浏览器







Cookie细节

Cookie不可跨域名性

(1)很多人在初学的时候可能有一个疑问:在访问Servlet的时候浏览器 是不是把所有的Cookie都带过去给服务器 会不会修改了别的网站的Cookie

(2) 答案是否定的。Cookie具有不可跨域名性。浏览器判断 一个网站是否能操作另一个网站的Cookie的依据是域名 。所以一般来说, 当我访问 baidu 的时候,浏览器只会把 baidu 颁发的Cookie带过去,而不会带上google的Cookie。



Cookie保存中文





中文属于Unicode字符,英文数据ASCII字符,中文占4个字符或者3个字符,英文占2个字符。


解决: Cookie使用Unicode字符时需要对Unicode字符进行编码。




Cookie保存在硬盘的中文数据是经过编码的,那么我们在 取出Cookie的时候要对中文数据进行解码






Cookie的有效期

Cookie 的有效期是通过 setMaxAge () 来设置的

如果 MaxAge 正数 浏览器会把Cookie写到硬盘中,只要还在 MaxAge 之前,登陆网站时该Cookie就有效 【不论关闭了浏览器还是电脑】

如果 MaxAge 负数 Cookie是临时性的,仅在本浏览器内有效 ,关闭浏览器Cookie就失效了,Cookie不会写到硬盘中。Cookie默认值就是-1。 这也就为什么在我第一个例子中,如果我没设置Cookie的有效期,在硬盘中就找不到对应的文件。

如果 MaxAge 0 ,则表示 删除该Cookie 。Cookie机制没有提供删除Cookie对应的方法,把 MaxAge 设置为0等同于删除Cookie




Cookie的修改和删除

上面我们已经知道了Cookie机制没有提供删除Cookie的方法。其实细心点我们可以发现,Cookie机制也没有提供修改Cookie的方法。那么我们 怎么修改Cookie的值呢

Cookie存储的方式 类似于Map集合 ,如下图所示


                        

Cookie的名称相同,通过response添加到浏览器中,会覆盖原来的Cookie

以country为名保存的是%E4%B8%AD%E5%9B%BD,下面我 再以country为名, 把值改变 一下 。 

现在我要删除该Cookie, MaxAge 设置为0,并添加到浏览器中即可


      


Cookie的域名

Cookie domain 属性决定运行访问 Cookie 的域名。 domain 的值规定为 “. 域名

C ookie的隐私安全机制决定Cookie是不可跨域名的。也就是说www.baidu.com和www.google.com之间的Cookie是互不交接的。即使是同一级域名,不同二级域名也不能交接,也就是说:www.goole.com和www.image.goole.com的Cookie也不能访问


现在我希望 一级域名相同的网页Cookie之间可以相互访问。也就是说www.image.zhongfucheng.com可以获取到www.zhongfucheng.com的Cookie 就需要使用到domain方法。




Cookie的路径

Cookie path 属性决定允许访问 Cookie 的路径






Cookie的安全属性

(1)HTTP协议不仅仅是无状态的,而且是不安全的!如果不希望Cookie在非安全协议中传输,可以 设置Cookie的secure属性为true,浏览器只会在HTTPS和SSL等安全协议中传输该Cookie

(2) 当然了,设置secure属性不会将Cookie的内容加密。如果想要保证安全,最好使用md5算法加密


【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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