Cookie是移动应用中会话管理的好主意吗?

时间:2013-10-22 08:43:43

标签: android iphone session mobile cookies

我发现Google Dev和帖子here(以及google上的许多其他首页结果)都说是。 (它几乎听起来像是在促进这种做法)但是在W3C doc他们说并且我引用“......在移动环境中,不能依赖cookie支持,因为它可能在设备配置中被禁用或者被禁用移动网络。“

如果是,我该如何处理禁用cookie的情况?

如果不是,我应该考虑哪些其他选择?

2 个答案:

答案 0 :(得分:1)

Cookie只是通过Set-Cookie到达回复的某些标头,并在Cookie的请求中回复。实际上,无论浏览器是在PC还是移动设备(Chrome,Dolphin等)上运行,都可以在浏览器中禁用cookie。在浏览器级别,我猜这是关于忽略或不是这些标题。因此,如果您要构建一个在移动浏览器上看起来不同的网站,或者如果您想在WebView中显示该网站,则可能会遇到此问题。所以,如果你走这条路,也许使用cookies是不安全的。但是,对于WebView,您可以使用CookieManager提供一些灵活性。

如果您正在构建原生应用并且您的目标是提供http内容和Cookie的服务器API,那么事情会发生变化。根据{{​​3}},您可以选择http engine that you're using使用java.net.CookieHandler来管理这些Cookie。或者,您可以创建自己的Cookie存储API,根据您的需要过滤Cookie,更新Cookie,删除等。如果你走这条路,我会建议使用cookies ......

我不是iOS专家,但我想同样适用于iOS原生应用。你应该有一些用于读/写标题的API,特别是cookie管理。

答案 1 :(得分:0)

您可以使用HTML 5中的Web Storage API,它几乎与所有浏览器兼容,如您所见:Web Storage Compatibility

WebStorageSessionStorage可以像cookie一样exatcly使用,存储key/value对,但具有不会从服务器到客户端来回发送的优点,但是而是存储在您的手机上。

更重要的是,它们非常容易使用,就像这样:

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


但是,您应该使用更加柔和的生产检查(例如Modernizr


正如他们的名字所示,SessionStorage在当前会话结束时被清空,而LocalStorage在会话中持续存在。