开发者社区> ke_ry> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

cookie用法小结 cookie.setPath 跨域共享

简介: 1. JSP中Cookie的读写 Cookie的本质是一个键值对,当浏览器访问web服务器的时候写入在客户端机器上,里面记录一些信息。Cookie还有一些附加信息,比如域名、有效时间、注释等等。 下面是一个jsp中写入读取Cookie的测试:在顶级域名中写入Cookie,在子域名中读取,目的是实现一个分布系统的单点登录。
+关注继续查看
1. JSP中Cookie的读写
Cookie的本质是一个键值对,当浏览器访问web服务器的时候写入在客户端机器上,里面记录一些信息。Cookie还有一些附加信息,比如域名、有效时间、注释等等。
下面是一个jsp中写入读取Cookie的测试:在顶级域名中写入Cookie,在子域名中读取,目的是实现一个分布系统的单点登录。
两个jsp中读写代码如下:
写入:
<% 
Cookie cookie = newCookie("write","cookie_write"); 
cookie.setComment("这是一个Cookie写入测试!"); 
cookie.setVersion(100); 
cookie.setMaxAge(3600); 
cookie.setDomain(".iisp.com"); 
response.addCookie(cookie); 

%>
读取
<% 
Cookie cookies[]=request.getCookies(); 
out.println(" cookie的数量为:"+ cookies.length); 
out.println("<br>"+"<br>"); 
for(inti = 0;i<cookies.length;i++){ 
out.println("getName="+cookies[i].getName()+"<br>"); 
out.println("getValue="+cookies[i].getValue()+"<br>"); 
out.println("getComment="+cookies[i].getComment()+"<br>"); 
out.println("getDomain="+cookies[i].getDomain()+"<br>"); 
out.println("getPath="+cookies[i].getPath()+"<br>"); 
out.println("getMaxAge="+cookies[i].getMaxAge()+"<br>"); 
out.println("getVersion="+cookies[i].getVersion()+"<br>"); 
out.println("getSecure="+cookies[i].getSecure()+"<br>"); 
out.println("<br>"+"<br>"); 

%> 
测试结果表明:Cookied的写入读取均没有问题,并且Cookie的访问和域名有密切关系。子域名下可以读取到上级域名的Cookie。而不能读取到其他域名下的Cookie。

 

2.javax.servlet.http.Cookie有两个比较重要的方法:setDomain()、setPath()

正常的cookie只能在一个应用中共享,即一个cookie只能由创建它的应用获得。

1.可在同一应用服务器内共享方法:设置cookie.setPath("/"); 
本机tomcat/webapp下面有两个应用:webapp_a和webapp_b, 
1)原来在webapp_a下面设置的cookie,在webapp_b下面获取不到,path默认是产生cookie的应用的路径。

2)若在webapp_a下面设置cookie的时候,增加一条cookie.setPath("/");或者cookie.setPath("/webapp_b/");
就可以在webapp_b下面获取到cas设置的cookie了。

3)此处的参数,是相对于应用服务器存放应用的文件夹的根目录而言的(比如tomcat下面的webapp),因此cookie.setPath("/");之后,可以在webapp文件夹下的所有应用共享cookie,而cookie.setPath("/webapp_b/");
是指cas应用设置的cookie只能在webapp_b应用下的获得,即便是产生这个cookie的webapp_a应用也不可以。

4)设置cookie.setPath("/webapp_b/jsp")或者cookie.setPath("/webapp_b/jsp/")的时候,只有在webapp_b/jsp下面可以获得cookie,在webapp_b下面但是在jsp文件夹外的都不能获得cookie。

5)设置cookie.setPath("/webapp_b");,是指在webapp_b下面才可以使用cookie,这样就不可以在产生cookie的应用webapp_a下面获取cookie了

6)有多条cookie.setPath("XXX");语句的时候,起作用的以最后一条为准。

3.跨域共享cookie的方法:设置cookie.setDomain(".xxx.com");
例如在www.a.com下面写了一个Cookie["www.a.com"],在域名www.b.cn中如何访问Cookie["www.a.com"]呢?

通常,cookie却不能跨越域传递,只有那些创建它的域才能访问,同一根域名下的二级域名,三级域名可以直接共享。但你可以利用重定向来间接的获取cookies。

 
 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
微信小程序使用Cookie
微信小程序不支持Cookie,因此,需要借助小程序的数据缓存来实现Cookie. 环境: mpvue + fly.js 登录成功后,在处理登录验证的method里,加入以下内容保存Cookie: ``` wx.
1635 0
解决IE浏览器中Iframe跨域访问不能读写cookie问题
摘要: 本文讲的是解决IE浏览器中Iframe跨域访问不能读写cookie问题, 假设A嵌套了B 解决方法:第一种很简单:将系统B设置为可信站点。
1204 0
Session与Cookie的对比
Session与Cookie的对比: Session: 在客户端内存中保存用户信息; session保存的是Object类型 随会话的结束而将其存储的数据销毁 保存重要的信息。 Cookie: 在客户端以文本文件的形式保存用户信息; cookie保存是String类型;Cookie中对保存...
636 0
Cookie和Session (转)
Session和Cookie在网站开发中是用来保存用户与后端服务器的交互状态。它们有各自的缺点和优点。而且,他们的优点和应用场景是对立的。   Cookie 完整地描述:当一个用户通过HTTP访问一个服务器时,这个服务器会将一些Key/Value键值返回给客户端浏览器,并给这些数据加上一些限制条件,在条件符合时,用户下次访问这个服务器时,数据又将完整地带回给服务器。
895 0
Extjs 项目中常用的小技巧,也许你用得着(4)---Extjs 中的cookie设置
1.ExtJs设置cookie两种方式 其一:设置cookie如下 saveacct=isForm.getForm().findField('itemselector').getValue(); Ext.
841 0
cookie&session
会话技术 1.       会话,用户打开浏览器,点了一些超链接,关闭浏览器的过程 2.       会话过程中会产生一些数据,这些数据是每个用户独享的,需要找个地方存起来 3.       会话技术就是解决上述问题的,Cookie是客户端技术,Session是服务器端技术   Cookie对象 1.       Cookie对象的创建 Cookie coo
1175 0
+关注
ke_ry
开源技术专家
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载