2011-12-13 95 views
7

我需要使用ColdFusion讀取中從http://origin.domain.com創建的cookie。我已經看到很多有關如何使用CFCOOKIE在子域中創建cookie的信息,但我不知道如何訪問已存在的cookie。讀取ColdFusion中的跨域(跨子域)Cookie(HTTPS)

無論如何,HTTPS會使這種情況變得不可能嗎?

附錄: 以下檢查的答案正確地解決了上述問題。在我的情況下,它不起作用。我應該解釋一下:sub1.domain.com上的cookie由託管的第三方產品創建 - 不是用coldfusion編寫的,也不是由我控制的。

回答

6

這真的很容易。當您創建cookie時,請爲其指定一個與您的域相同的域屬性。要記住的重要部分是它必須有一個前導點。

<cfcookie name="mycookie" value="myvalue" domain=".mydomain.com" path="/" /> 

前面的點告訴瀏覽器的cookie發送給mydomain.com的任何子域將包括sub.mydomain.com和blah.mydomain.com。

你會那麼可以從任意子域訪問的cookie就像任何其他的cookie:

<cfset thevalue = cookie.mycookie /> 

你應該這樣做的最佳實踐,以支持舊版瀏覽器。

這裏是RFC2109聲明:HTTP狀態管理機制,它可能影響到舊的瀏覽器

「爲了避免可能的安全或隱私的侵犯,用戶代理 拒絕一個cookie(不存儲它的信息),如果... Domain屬性的值不包含嵌入點或不以 a點開頭。「

我相信這是由RFC 2965覆蓋:HTTP狀態管理機制其中規定

「域= value可選域屬性的值指定 域針對cookie有效期。如果明確指定的 值不以點開頭,則用戶代理提供領先的 點。「

這就解釋了爲什麼它可能在爲你工作,推測是現代瀏覽器。我仍然建議你添加它。

+0

其實我只是試了一下 - 當我做到這一點時,領先點並不是必要的。 – 2011-12-14 00:24:07