2013-10-22 44 views
2

我發現了Google Dev和一個帖子here(和google上的其他許多首頁結果)一樣。 (它幾乎聽起來像他們促進這種做法)但在W3C doc他們說,我引用「......在移動環境中,cookie支持不能被依賴,因爲它可能在設備配置或移動網絡被禁用。」Cookie是移動應用中會話管理的好主意嗎?

如果是,我該如何處理禁用cookie的情況?

如果不是,我應該考慮哪些其他選項?

+0

爲什麼你需要cookie?你想用它做什麼? –

+0

用於維護用戶會話。 – darshandzend

+0

你不能使用$ _SESSION而不是$ _COOKIE嗎? –

回答

1

餅乾只是一些標題到達的響應與Set-Cookie和答覆在Cookie的請求。事實上,無論瀏覽器運行在PC還是手機(Chrome,Dolphin等),cookies都可能在瀏覽器中被禁用。在瀏覽器級別,我想這是關於忽略或不是這些標題。因此,如果您構建的網站在移動瀏覽器上看起來有所不同,或者您想在WebView中展示,可能會遇到此問題。所以,如果你要走這條道路,那麼使用cookies可能就不那麼安全。但使用WebView時,您可以通過使用CookieManager來提供一些靈活性。

如果您正在構建原生應用程序,並且您的目標是提供http內容和cookie的服務器API,情況就會改變。根據http engine that you're using,您可以選擇使用java.net.CookieHandlerCookieStore來管理這些cookie。或者,您可以創建自己的Cookie存儲API,以根據您的需求過濾cookie,更新它們,刪除等。我會建議使用cookies,如果你要走在這條路上......

我不是iOS專家,但我猜測同樣適用於iOS本地應用程序。你應該有一些API來讀/寫頭文件,特別是cookie管理。

+0

謝謝,@ gunar。我要去用餅乾。 – darshandzend

+0

然後你可以把這個標記爲接受 – gunar

+0

當然。如果你可以告訴在服務器端處理這個問題,那會很好。 – darshandzend

0

您可以使用Web存儲API從HTML 5,這已經是周圍幾乎所有的瀏覽器主要是兼容的,你可以在這裏看到:Web Storage Compatibility

WebStorageSessionStorage可以exatcly使用像餅乾,存儲key/value但具有不會從服務器來回發送到客戶端的優點,而是存儲在您的移動設備上。

更多了,他們是很容易使用,不亞於此:

if (typeOf(Storage) !== "undefined") { 
    localStorage.setItem('some_key','some_value') 
    var myVal = localStorage.getItem('myKey') 
} 


然而,你應該在生產中使用了更sofisticated檢查(如Modernizr


正如他們的名字建議,SessionStorage在當前會話結束時清空,而LocalStorage在會話中保持不變。

相關問題