JAVA学习笔记_cookie.setPath()_setDomain()跨域共享
来源:互联网 发布:足彩分析软件app 编辑:程序博客网 时间:2024/06/05 09:51
转自:
http://blog.sina.com.cn/s/blog_8f61bd170100xe4d.html
http://www.cnblogs.com/keyi/p/6122438.html
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。
正常的cookie只能在一个应用中共享,即一个cookie只能由创建它的应用获得。
2.可在同一应用服务器内共享方法:设置cookie.setPath(“/”);
本机tomcat/webapp下面有两个应用:cas和webapp_b, 1)原来在cas下面设置的cookie,在webapp_b下面获取不到,path默认是产生cookie的应用的路径。 2)若在cas下面设置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的cas应用也不可以。 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的应用cas下面获取cookie了 6)有多条cookie.setPath("XXX");语句的时候,起作用的以最后一条为准。
3.跨域共享cookie的方法:设置cookie.setDomain(“.jszx.com”);
A机所在的域:home.langchao.com,A有应用cas B机所在的域:jszx.com,B有应用webapp_b 1)在cas下面设置cookie的时候,增加cookie.setDomain(".jszx.com");,这样在webapp_b下面就可以取到cookie。 2)这个参数必须以“.”开始。 3)输入url访问webapp_b的时候,必须输入域名才能解析。比如说在A机器输入:http://lc-bsp.jszx.com:8080/webapp_b,可以获取cas在客户端设置的cookie,而B机器访问本机的应用,输入:http://localhost:8080/webapp_b则不可以获得cookie。 4)设置了cookie.setDomain(".jszx.com");,还可以在默认的home.langchao.com下面共享。
通常,cookie却不能跨越域传递,只有那些创建它的域才能访问,同一根域名下的二级域名,三级域名可以直接共享。但你可以利用重定向来间接的获取cookies。
阅读全文
0 0
- JAVA学习笔记_cookie.setPath()_setDomain()跨域共享
- cookie用法小结 cookie.setPath 跨域共享
- 黑马程序员_Cookie学习总结
- 应用直接共享cookie | cookie.setPath()用法
- Java学习笔记——共享区
- OC学习笔记共享
- 《Java Concurrency in Practice》 学习笔记--第三章:共享变量
- 【Java学习笔记】15:线程的共享互斥
- java并发编程实践之共享对象学习笔记
- Java 多线程学习笔记 4 多线程共享数据
- Java并发编程学习——《Java Concurrency in Practice》学习笔记 3.对象的共享
- Linux学习笔记--共享文件夹
- 《C++ Primer》学习笔记共享
- Linux学习笔记--文件共享
- flash shareobject能实现跨域数据共享吗?(学习笔记)
- JAVA并发编程学习笔记之AQS源码分析(共享与互斥)
- JAVA并发编程学习笔记之AQS源码分析(共享与互斥)
- JAVA并发编程学习笔记之AQS源码分析(共享与互斥)(r)
- Spring Boot 注解的意义以及作用
- 简单使用viewpager+handler实现图片的轮播
- windows下命令行使用的一些指令
- Celery使用快速入门
- 盘点客户管理软件应有的功能有哪些?
- JAVA学习笔记_cookie.setPath()_setDomain()跨域共享
- 1.1链表拓展题
- Typro & Markdown常见的基本用法
- Android PopupWindow弹窗
- SQLException之serverTimeZone
- DCNN与语义分割
- CSUOJ
- VS2017 生成函数注释
- IAP系统升级