正常的cookie只能在一個(gè)應(yīng)用中共享,即一個(gè)cookie只能由創(chuàng)建它的應(yīng)用獲得。 1.可在同一應(yīng)用服務(wù)器內(nèi)共享方法:設(shè)置cookie.setPath("/"); 本機(jī)tomcat/webapp下面有兩個(gè)應(yīng)用:cas和webapp_b, 1)原來在cas下面設(shè)置的cookie,在webapp_b下面獲取不到,path默認(rèn)是產(chǎn)生cookie的應(yīng)用的路徑。 2)若在cas下面設(shè)置cookie的時(shí)候,增加一條cookie.setPath("/");或者cookie.setPath("/webapp_b/");就可以在webapp_b下面獲取到cas設(shè)置的cookie了。 3)此處的參數(shù),是相對于應(yīng)用服務(wù)器存放應(yīng)用的文件夾的根目錄而言的(比如tomcat下面的webapp),因此cookie.setPath("/");之后,可以在webapp文件夾下的所有應(yīng)用共享cookie,而cookie.setPath("/webapp_b/");是指cas應(yīng)用設(shè)置的cookie只能在webapp_b應(yīng)用下的獲得,即便是產(chǎn)生這個(gè)cookie的cas應(yīng)用也不可以。 4)設(shè)置cookie.setPath("/webapp_b/jsp")或者cookie.setPath("/webapp_b/jsp/")的時(shí)候,只有在webapp_b/jsp下面可以獲得cookie,在webapp_b下面但是在jsp文件夾外的都不能獲得cookie。 5)設(shè)置cookie.setPath("/webapp_b");,是指在webapp_b下面才可以使用cookie,這樣就不可以在產(chǎn)生cookie的應(yīng)用cas下面獲取cookie了 6)有多條cookie.setPath("XXX");語句的時(shí)候,起作用的以最后一條為準(zhǔn)。 6)設(shè)置多個(gè)path的方法??? 2.跨域共享cookie的方法:設(shè)置P3P 轉(zhuǎn)載如下: 今天在w3網(wǎng)站上看到了一篇介紹p3p的文章(http://www.w3.org/TR/P3P/),利用這個(gè)可以實(shí)現(xiàn)跨域訪問cookie,我也試驗(yàn)一下。 其實(shí)很簡單:試驗(yàn)用了2個(gè)域名readlog.cn和diaor.com 首先在readlog.cn下放置一個(gè)文件setcookie.php 內(nèi)容: PHP代碼 <?php header('P3P: CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"');//p3p setcookie("TestCookie","test",time()+3600,"/",".readlog.cn");//設(shè)置cookie ?> 再放置一個(gè)readcookie.php 內(nèi)容: PHP代碼 <?php echo $_COOKIE["TestCookie"]; ?> 然后在diaor.com下放置setcookie.php ,內(nèi)容: JavaScript代碼 <script src="http://www.readlog.cn/setcookie.php"></script> 然后訪問http://www.diaor.com/setcookie.php 抓取數(shù)據(jù)包可以發(fā)現(xiàn),在readlog.cn域下生成了一個(gè)cookie ,名稱是TestCookie,值是test 下面訪問http://www.readlog.cn/readcookie.php 來驗(yàn)證一下,可以發(fā)現(xiàn),cookie確實(shí)設(shè)置成功了。 有興趣可以去掉header('P3P: CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"');這句,試一下就會發(fā)現(xiàn)cookie能設(shè)置,但是在readlog.cn讀不到這個(gè)cookie。