2008-09-18 14 views
7

我已經對此做了一些測試(在服務器端處理DWR框架Ajax請求處理程序時),看起來您可以成功操作cookie,但這與我在Ajax上閱讀的最佳做法相反實踐以及瀏覽器如何解釋來自XmlHttpRequest的響應。注意我已經在測試:您可以在服務器端處理Ajax(XHR)調用期間可靠地設置或刪除cookie嗎?

  • IE 6和7
  • Firefox 2和3
  • 的Safari

並且在所有情況中的Ajax請求處理HttpServletResponse對象上標準的cookie行動是正確由瀏覽器解釋,但我想知道是否最好的做法將cookie操作推送到客戶端,或者如果這個(更乾淨的)服務器端cookie處理可以被信任。

我會歡迎答案都具體到DWR框架和一般的Ajax。

+0

我想知道這一點,因爲我在刪除服務器端DWR請求中的cookie時遇到了問題。 我可以創建它們,但不能刪除它們 - 自從假設它無法完成之後就已經計算出無cookie的解決方案。 – 2009-05-28 06:58:14

回答

8

XMLHttpRequest總是使用Web瀏覽器的連接框架。這是AJAX程序正常工作的要求,因爲如果XHR對象無法訪問瀏覽器的Cookie池,用戶會註銷。

從理論上講,網絡瀏覽器可以在不使用瀏覽器的連接框架的情況下簡單地共享會話cookie,但這從來沒有(據我所知)在實踐中發生。即使Flash插件也使用Web瀏覽器的連接。

因此,最終結果是通過AJAX操作cookie是安全的。只要記住 AJAX調用可能永遠不會發生。他們不是保證事件,所以不要指望他們。

+0

非常感謝,儘管數量不同,但考慮到我自己的測試結果,投票以及圍繞服務器端業務邏輯集中的一般最佳實踐,這是最有意義的。 – Peter 2008-09-18 17:50:14

-1

在客戶端操作cookies與「最佳實踐」相反。而且它也不是必需的。 HttpOnly餅乾沒有被引入沒有。

+0

他沒有在客戶端上操作cookie;他正在服務器上操作它們以響應Ajax請求。在任何情況下,只要客戶端的cookie操作在JS被禁用或不受支持時優雅地降級,通常不會被視爲有害的。 – 2008-09-18 04:32:08

1

在DWR的背景下,它可能不是「安全的」。

從閱讀the DWR site它說:

,你對待HTTP請求和響應爲只讀是很重要的。雖然HTTP頭可能會通過確認,但有些瀏覽器很可能會忽略它們。

我以爲這意味着設置cookie或請求屬性是一個禁忌。
說了這樣的話,我有設置請求屬性的代碼(我在閱讀該頁面之前寫的代碼),它看起來工作正常(除了刪除我在上面評論中提到的cookie)。

相關問題