2010-01-26 43 views
3

我試圖在用戶登錄時將會話cookie設置爲特定路徑(假設爲/foo)。複雜的是登錄頁面位於/,但請求立即重定向到/foo/something。事情是這樣的:有關Cookie和路徑的RFC問題

請求:

POST/HTTP/1.1 

username=foo&password=bar 

響應:

HTTP/1.0 302 Found 
Location: http://example.com/foo/home 
Set-Cookie: session=whatever; path=/foo 

然而,RFC文檔中的相關內容,我可以找到(rfc2109rfc2965)這樣說:

爲防止可能的安全或隱私違規,請拒絕用戶代理 TS一個cookie(不存儲它的信息),如果任何 以下的爲真:

  • 爲Path屬性的值不是請求 - URI的前綴。

...

上述cookie的設置過程似乎工作還好,但據我可以告訴的RFC說這不應該。

我想在生產系統中使用它,但如果以後我會遇到可怕的瀏覽器不兼容問題,我真的不想這樣做。

我誤讀了RFC?

在此先感謝!

回答

1

不要注意那些RFC;他們與現實相差甚遠。

目前有一個IETF工作組正在記錄實際的Cookie行爲;他們的文件雖然只是一份草稿,但卻是更好的材料。

請參見: http://datatracker.ietf.org/doc/draft-ietf-httpstate-cookie/

如果你沒有發現,在草案涉及您的問題文本,把它與工作組!

0

根據你的問題,我認爲你對RFC的理解是正確的。聽起來好像你想在重定向到'/ foo/home'後設置cookie。我認爲真正的問題是:「你怎麼知道‘/富/家’用戶被‘/’正確驗證?」

如果你必須使用一個Location頭(重定向)從「/」「/富/家」,似乎要做到這一點是使用一個查詢的唯一方法位置標題值中的字符串參數。

也許一個需要考慮的設計問題是:爲什麼用戶需要對他們將安全訪問的路徑之外的URL進行身份驗證?如果只有安全的內容下「/富」,那麼爲什麼不開機自檢「/富/登錄」,而不是「/」進行身份驗證?