Cookie的属性和跨域问题

2017-03-09  本文已影响2469人  拾壹北

需求:在某页面add的cookie在另一个页面却获取不到。
   ——难道cookie只对当前页面有效?学习后发现,cookie除了有name、value和生存时长等这些属性之外,还有很多很重要的属性,而domain属性将指定可访问此cookie的域名,path属性将指定该cookie的页面路径。

Chrome下查看cookie

一、Cookie的属性

一个域名下面可能存在着很多个cookie对象,cookie具有多个属性:

非顶级域名,如二级域名或者三级域名,设置的cookie的domain只能为顶级域名或者二级域名或者三级域名本身,不能设置其他二级域名的cookie,否则cookie无法生成。

顶级域名只能设置domain为顶级域名,不能设置为二级域名或者三级域名,否则cookie无法生成。

二级域名能读取设置了domain为顶级域名或者自身的cookie,不能读取其他二级域名domain的cookie。所以要想cookie在多个二级域名中共享,需要设置domain为顶级域名,这样就可以在所有二级域名里面或者到这个cookie的值了。
顶级域名只能获取到domain设置为顶级域名的cookie,其他domain设置为二级域名的无法获取。

二、Cookie的路径

我们知道Cookie的属性有很多,其中有一个属性是路径。有些人认为Cookie的路径指的是Cookie在客户端的保存路径,其实并不是。Cookie的路径是在服务器创建Cookie时设置的,它的作用是决定浏览器访问服务器的某个资源时,需要将浏览器端保存的那些Cookie归还给服务器

三、Cookie跨域setDomain和setPath

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

1.可在同一应用服务器内共享方法:

设置cookie.setPath("/"); 假设本机tomcat/webapp下面有两个应用:cas和webapp_b:

2.跨域共享cookie的方法:

设置cookie.setDomain(".jszx.com");假设 A机所在的域:home.langchao.com,A有应用cas B机所在的域:jszx.com,B有应用webapp_b :

上一篇 下一篇

猜你喜欢

热点阅读