cookie用法小结 cookie.setPath 跨域共享-阿里云开发者社区

开发者社区> ke_ry> 正文

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。

 
 

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

相关文章
算法学习之路|用C++刷算法会用到的STL(二)——set
用C++刷算法会用到的STL(二)——set
2420 0
jsp ResultSet用法(引)
1,如何获得ResultSet的结构 ResultSetMetaData rsmd=rs.getMetaData();cn=rsmd.getColumnCount();for(int ik=1;ik
587 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
2962 0
set_error_handler() 重要用法
转自just code 原文地址http://justcoding.iteye.com/blog/848711 set_error_handler这个函数的作用是为了防止错误路径泄露   何为错误路径泄露呢? 我们写程序,难免会有问题(是经常会遇到问题  ),而PHP遇到错误时,就会给出出错脚本的位置、行数和原因 有很多人说,这并没有什么大不了。
760 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13884 0
Windows系统命令行net user命令用法
原文:Windows系统命令行net user命令用法 在Windows渗透测试过程中,最常用的要数net user 命令了,但是非常多的时候我们都是对Linux命令非常熟悉,对Windows命令非常熟悉或者了解用法的少只有少,为了以后工作方便,这里记录一下Windows系统中的 net user 命令的用法。
1210 0
DataSet用法详细 转
一、特点介绍1、处理脱机数据,在多层应用程序中很有用。2、可以在任何时候查看DataSet中任意行的内容,允许修改查询结果的方法。3、处理分级数据4、缓存更改5、XML的完整性:DataSet对象和XML文档几乎是可互换的。
687 0
+关注
ke_ry
开源技术专家
443
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载