2015-05-13 119 views
2

從文檔和this link,我已經知道事實是foo.example.com可以通過在Set-Cookie標頭中發送Domain = example.com的響應來設置Cookie的example.com。但爲什麼這是允許的?爲什麼foo.example.com會爲example.com設置cookie?

例如,事實是,一臺服務器(比如,foo.example.com)不能設置cookies其兄弟姐妹(比如,bar.example.com)或域名比它低(也稱「其子」說,ide.foo.example.com)但它可以爲域名設置更高的cookie(也稱爲「其父母」,在這種情況下爲example.com

讓我通過將其置於真實世界中來更清楚地表明問題的說法。像Google App Engine上的應用程序foo.appspot.com顯然不能爲bar.appspot.com設置Cookie,因爲它們是兩個不同的應用程序,它們不應該影響彼此的行爲。但爲什麼允許foo.appspot.com將Cookie設置爲appspot.com發送Domain = appspot.com在其響應頭?通過這樣做,foo.appspot.com應用實際上可以影響其他應用在Google App Engine上的行爲,因爲瀏覽器在訪問bar.appspot.com時(其域名是appspot.com的孩子)將發送此cookie。

我從Udacity網絡開發課程瞭解了關於cookies的所有內容。但我真的很困惑這個問題。任何人都可以幫忙解釋一下嗎?提前致謝。 :-)

回答

0

您提供的鏈接太可怕了,過時了。太糟糕的人使用谷歌搜索「cookie域」會首先找到它。

我應該寫一個更好的;但現在,快速回答你的問題 - 這是關於「公共後綴」域。

服務器「example.com」可以爲「com」設置cookie嗎?不,因爲「com」是公共後綴。

「foo.co.uk」可以爲「co.uk」設置cookie嗎?不,因爲「co.uk」是公共後綴。

恰巧「appspot.com」也是一個公共後綴;所以「foo.appspot.com」無法設置domain =「appspot.com」的cookie。 (它可以,但瀏覽器會拒絕它)

不幸的是,沒有算法來確定哪個是公共後綴。所有公共後綴的列表在https://publicsuffix.org/

相關問題