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

网友投稿 787 2022-05-28

什么是会话技术

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

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

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

( 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的有效期,在硬盘中就找不到对应的文件。

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

• 如果 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算法加密

HTTP 网络

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Linux基础知识总结1 | 文件与目录
下一篇:ES数据写入调优1
相关文章