2011-03-10 81 views
2

我正在GAE環境中創建一個Web應用程序。它大量使用AJAX/JSON來發送/接收數據以及所有相關信息。我不擔心JS禁用和過時的瀏覽器的瀏覽器,因爲它是我的個人項目,我試圖使它簡單,不會在代碼中臃腫。所以,我在項目中大量使用JavaScript。請告訴我如何在這種情況下更好地管理Cookie和會話。我有兩種變體 - 儘可能使用HTTP Set-Cookie,不使用JavaScript。第二個是相反的 - 儘可能使用JavaScript。兩種變體現在都可以正常工作,但我想讓它正確。在JavaScript需要設置cookie的情況下,我通過AJAX獲取一些數據,然後使用jQuery插件將這些鍵設置爲cookie,反之亦然,使用JS讀取cookie並通過AJAX發送它們。這兩種方法的優缺點是什麼?謝謝!如何管理cookie - 使用JavaScript或使用HTTP Set-Cookie?

回答

3

您應該在最方便的地方設置您的Cookie。
這可能意味着一些cookie將來自服務器,一些來自客戶端。

但是,請注意,出於安全原因,高風險cookie(例如登錄令牌)應該僅限HTTP,以便它們不能從Javascript訪問。

(不用說,他們應該是純SSL)

+1

爲什麼這會降低投票率? – SLaks 2011-03-10 15:13:07

1

餅乾總是與HTTP標頭捆綁的,所以在通過JavaScript讀取,並通過AJAX向他們發送到服務器中沒有「改善」。

例如,與顯示相關的設置(如字體大小或網站語言)通常只與客戶端相關,因此我只是簡單地使用JavaScript來設置和檢索這些Cookie。

像會話ID這樣的東西無論如何都需要服務器端的工作,所以通過HTTP Set-Cookie維護cookie似乎是最直接的方式。

0

當您使用標頭設置cookie時,您可以選擇僅設置HTTP(即無JavaScript訪問)和僅限SSL。

啓用這些選項可以避免應用程序中存在大量安全漏洞(請注意,設置http only標誌只會阻止javascript讀取cookie - 它仍將在Ajax請求中呈現)。