2014-02-06 59 views
2

我注意到我的ColdFusion會話cookie的奇怪行爲,即域名,路徑和httponly屬性不被保留。奇怪的會話cookie行爲

在我的application.cfc文件中,我將this.setclientcookies設置爲false。

在我onSessionStart事件中,我則有以下代碼:

<cfset sessionRotate()> 
<cfcookie name="CFID" value="#session.cfid#" path="#application.sessioncookiespath#" domain="#application.sessioncookiesdomain#" httponly="yes"> 
<cfcookie name="CFTOKEN" value="#session.cftoken#" path="#application.sessioncookiespath#" domain="#application.sessioncookiesdomain#" httponly="yes"> 

我第一次訪問一個頁面CFID和CFTOKEN餅乾被髮送到瀏覽器與正確的價值觀,域路徑失效日期等。

但是,當查看請求cookie以進行後續請求時,cookie的值已經丟失。

如果我然後關閉瀏覽器,重新打開並轉到頁面,同樣的cookie發送到服務器,所以我得到同一個會話,而不是瀏覽器在關閉時刪除cookie的預期行爲。

任何人都可以解釋這一點嗎?

謝謝。


針對肖恩。

響應餅乾返回初始請求www.domainname.com/sub是:

設置cookie的CFID = 123456;域= .domainname.com表示;到期日=星期五,07-Feb-2014 15:12:33 GMT;路徑= /分; HttpOnly

Set Cookie CFTOKEN = 2cf168a89952feec%2D4DAC5903%2D1DD8%2DB71C%2D3B0166C2FDAF5D6B;域= .domainname.com表示;到期日=星期五,07-Feb-2014 15:12:33 GMT;路徑= /分;僅Http

的後續請求任何其他頁面(在比/子目錄同級別或更深的任何頁面),或在同一頁(即刷新頁面)發送下面的請求cookie字符串:

CFID = 191297 ; CFTOKEN = 2cf168a89952feec%2D4DAC5903%2D1DD8%2DB71C%2D0B0166C2FDAF5D6D; ASP.NET_SessionId = s43bplyduc0hkgintth4gcqh

+0

通過後續的請求,你的意思是你刷新或你要去其他網頁?如果有其他頁面,它可能取決於您正在使用的路徑和域參數的值。您可以將您正在使用的實際值和從服務器請求的頁面路徑放在一起,而不是向我們顯示變量嗎? –

+0

@SeanCoyne請參閱我的編輯 – Michael

+1

好的,那些是發送的標題。所以,第一對夫婦正在設置cookie。接下來的是瀏覽器加載的cookie。如果域和路徑不匹配(你說他們這樣做),那麼瀏覽器不會發送它們,但是它發送它們,它的功能應該是它應該的。順便說一句,如果您使用J2EE會話,您可能會對會話有更好的運氣,它將設置jsessionid cookie而不是cfid和cftoken cookie。不確定你的用例是什麼,但我總是使用J2EE會話,FWIW。 –

回答