【问题标题】:Is cookies a good idea for session management in Mobile apps?Cookie 是移动应用程序中会话管理的好主意吗?
【发布时间】:2013-10-22 17:08:45
【问题描述】:

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

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

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

【问题讨论】:

  • 为什么需要 cookie?你想用它做什么。
  • 用于维护用户会话。
  • 你不能用 $_SESSION 代替 $_COOKIE 吗?
  • @TomHart 我本身并不是在寻找任何特定于语言的解决方案。此外,php $_SESSION 也适用于 cookie。 (参考:stackoverflow.com/questions/1535697/…
  • @darshandzend 是的..该回复与您的问题一样详细。如果您甚至不订阅您所处的情况,不知道您期望什么样的答案。祝您好运。

标签: android iphone session mobile cookies


【解决方案1】:

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

如果您正在构建本机应用程序并且您的目标是提供 http 内容和 cookie 的服务器 API,情况就会发生变化。根据http engine that you're using,您可以选择使用java.net.CookieHandlerCookieStore 来管理这些cookie。或者,您可以创建自己的 cookie 存储 API,根据您的需要过滤 cookie、更新它们、删除它们等等。如果您要走这条路,我建议您使用 cookie ...

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

【讨论】:

  • 谢谢,@gunar。我要去吃饼干。
  • 当然。如果你能说出在服务器端处理这个问题的方法,那就太好了。
  • 这取决于您在服务器端拥有什么(什么 API 以及什么是业务案例)。通常 cookie 管理由所有流行的技术自动完成,即使它是 Ruby、Servlet 或 ASP.NET。
  • 好的,但是 spring 通常在 web 上下文中运行——假设你也在做一个 web 应用程序。它是 Spring Web MVC 或 Liferay。所以这些框架内置了 cookie 管理。还是您只公开了一个 API?
【解决方案2】:

您可以使用 HTML 5 中的 Web Storage API,它已经在很大程度上与周围的所有浏览器兼容,您可以在此处看到:Web Storage Compatibility

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

此外,它们真的很容易使用,就像这样:

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


但是,您应该在生产中使用更复杂的检查(例如 Modernizr


顾名思义,SessionStorage 在当前会话结束时被清空,而 LocalStorage 在会话期间保持不变。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 2011-03-15
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    相关资源
    最近更新 更多