我发现Google Dev和帖子here(以及google上的许多其他首页结果)都说是。 (它几乎听起来像是在促进这种做法)但是在W3C doc他们说并且我引用“......在移动环境中,不能依赖cookie支持,因为它可能在设备配置中被禁用或者被禁用移动网络。“
如果是,我该如何处理禁用cookie的情况?
如果不是,我应该考虑哪些其他选择?
答案 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
WebStorage
和SessionStorage
可以像cookie一样exatcly使用,存储key/value
对,但具有不会从服务器到客户端来回发送的优点,但是而是存储在您的手机上。
更重要的是,它们非常容易使用,就像这样:
if ( typeOf(Storage) !== "undefined" ) {
localStorage.setItem('some_key','some_value')
var myVal = localStorage.getItem('myKey')
}
但是,您应该使用更加柔和的生产检查(例如Modernizr)
正如他们的名字所示,SessionStorage在当前会话结束时被清空,而LocalStorage在会话中持续存在。