Cookie的屬性和跨域問題

需求:在某頁(yè)面add的cookie在另一個(gè)頁(yè)面卻獲取不到。
   ——難道cookie只對(duì)當(dāng)前頁(yè)面有效距境?學(xué)習(xí)后發(fā)現(xiàn),cookie除了有name师幕、value和生存時(shí)長(zhǎng)等這些屬性之外伪货,還有很多很重要的屬性,而domain屬性將指定可訪問此cookie的域名蒙挑,path屬性將指定該cookie的頁(yè)面路徑忆蚀。

Chrome下查看cookie

一姑裂、Cookie的屬性

一個(gè)域名下面可能存在著很多個(gè)cookie對(duì)象舶斧,cookie具有多個(gè)屬性:

  • name字段為一個(gè)cookie的名稱

  • value字段為一個(gè)cookie的值

  • domain字段為可以訪問此cookie的域名,Servlet中通過setDomain()設(shè)置

非頂級(jí)域名泽台,如二級(jí)域名或者三級(jí)域名矾缓,設(shè)置的cookie的domain只能為頂級(jí)域名或者二級(jí)域名或者三級(jí)域名本身嗜闻,不能設(shè)置其他二級(jí)域名的cookie蜕依,否則cookie無法生成。

頂級(jí)域名只能設(shè)置domain為頂級(jí)域名琉雳,不能設(shè)置為二級(jí)域名或者三級(jí)域名样眠,否則cookie無法生成。

二級(jí)域名能讀取設(shè)置了domain為頂級(jí)域名或者自身的cookie翠肘,不能讀取其他二級(jí)域名domain的cookie吹缔。所以要想cookie在多個(gè)二級(jí)域名中共享,需要設(shè)置domain為頂級(jí)域名锯茄,這樣就可以在所有二級(jí)域名里面或者到這個(gè)cookie的值了。
頂級(jí)域名只能獲取到domain設(shè)置為頂級(jí)域名的cookie,其他domain設(shè)置為二級(jí)域名的無法獲取肌幽。

  • path字段為可以訪問此cookie的頁(yè)面路徑晚碾。 比如domain是abc.com,path是/test喂急,那么只有/test路徑下的頁(yè)面可以讀取此cookie格嘁。Servlet中通過setPath()設(shè)置,"/"表示根路徑

  • expires/Max-Age 字段為此cookie超時(shí)時(shí)間廊移。若設(shè)置其值為一個(gè)時(shí)間吸申,那么當(dāng)?shù)竭_(dá)此時(shí)間后剪撬,此cookie失效。不設(shè)置的話默認(rèn)值是Session,意思是cookie會(huì)和session一起失效丙躏。當(dāng)瀏覽器關(guān)閉(不是瀏覽器標(biāo)簽頁(yè),而是整個(gè)瀏覽器) 后止毕,此cookie失效套才。

  • size字段 此cookie大小。

  • http字段 cookie的http only屬性辱揭。若此屬性為true离唐,則只有在http請(qǐng)求頭中會(huì)帶有此cookie的信息,而不能通過document.cookie來訪問此cookie问窃。

  • secure 字段 設(shè)置是否只能通過https來傳遞此條cookie

二亥鬓、Cookie的路徑

我們知道Cookie的屬性有很多,其中有一個(gè)屬性是路徑域庇。有些人認(rèn)為Cookie的路徑指的是Cookie在客戶端的保存路徑嵌戈,其實(shí)并不是。Cookie的路徑是在服務(wù)器創(chuàng)建Cookie時(shí)設(shè)置的较剃,它的作用是決定瀏覽器訪問服務(wù)器的某個(gè)資源時(shí)咕别,需要將瀏覽器端保存的那些Cookie歸還給服務(wù)器

三写穴、Cookie跨域setDomain和setPath

正常的cookie只能在一個(gè)應(yīng)用中共享惰拱,即一個(gè)cookie只能由創(chuàng)建它的應(yīng)用獲得。

1.可在同一應(yīng)用服務(wù)器內(nèi)共享方法:

設(shè)置cookie.setPath("/"); 假設(shè)本機(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ù),是相對(duì)于應(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)炕婶。

2.跨域共享cookie的方法:

設(shè)置cookie.setDomain(".jszx.com");假設(shè) A機(jī)所在的域:home.langchao.com,A有應(yīng)用cas B機(jī)所在的域:jszx.com,B有應(yīng)用webapp_b :

  • 1)在cas下面設(shè)置cookie的時(shí)候莱预,增加cookie.setDomain(".jszx.com")柠掂,這樣在webapp_b下面就可以取到cookie。

  • 2)這個(gè)參數(shù)必須以“.”開始锁施。

  • 3)輸入url訪問webapp_b的時(shí)候陪踩,必須輸入域名才能解析。比如說在A機(jī)器輸入:http://lc-bsp.jszx.com:8080/webapp_b,可以獲取cas在客戶端設(shè)置的cookie悉抵,而B機(jī)器訪問本機(jī)的應(yīng)用肩狂,輸入:http://localhost:8080/webapp_b則不可以獲得cookie。

  • 4)設(shè)置了cookie.setDomain(".jszx.com");姥饰,還可以在默認(rèn)的home.langchao.com下面共享傻谁。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市列粪,隨后出現(xiàn)的幾起案子审磁,更是在濱河造成了極大的恐慌,老刑警劉巖岂座,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件态蒂,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡费什,警方通過查閱死者的電腦和手機(jī)钾恢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鸳址,“玉大人瘩蚪,你說我怎么就攤上這事「迨颍” “怎么了疹瘦?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)巡球。 經(jīng)常有香客問我言沐,道長(zhǎng)邓嘹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任险胰,我火速辦了婚禮吴超,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鸯乃。我一直安慰自己,他們只是感情好跋涣,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布缨睡。 她就那樣靜靜地躺著,像睡著了一般陈辱。 火紅的嫁衣襯著肌膚如雪奖年。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天沛贪,我揣著相機(jī)與錄音陋守,去河邊找鬼。 笑死利赋,一個(gè)胖子當(dāng)著我的面吹牛水评,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播媚送,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼中燥,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了塘偎?” 一聲冷哼從身側(cè)響起疗涉,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吟秩,沒想到半個(gè)月后咱扣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡涵防,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年闹伪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片武学。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡祭往,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出火窒,到底是詐尸還是另有隱情硼补,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布熏矿,位于F島的核電站已骇,受9級(jí)特大地震影響离钝,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜褪储,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一卵渴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鲤竹,春花似錦浪读、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至吱肌,卻和暖如春痘拆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背氮墨。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工纺蛆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人规揪。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓桥氏,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親粒褒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子识颊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容