【发布时间】:2013-02-27 06:11:57
【问题描述】:
我正在开发一个使用服务器会话的 PhoneGap 应用。它需要 cookie 来处理会话。此外,还应处理来自负载平衡器的 cookie。所以没有办法。您如何处理 PhoneGap 应用中的 Cookie?
我已经完成了一些研究:
- 有人说 cookie 处理可能取决于服务器没有为未知用户代理 (IIS) 设置 cookie:PhoneGap session (cookies) on iOS
- 在 JavaScript 中可以使用 document.cookie = ... 设置 cookie,但它们不会保存在 PhoneGap 中并且会丢失。在触发 xhr 请求之前,它可以工作。
- 可以在使用 xhr.getResponseHeader('Set-Cookie') 进行 xhr 请求后检索 Cookie。但只有在服务器上实际设置时。不幸的是,jQuery 去掉了“Cookie”标头。
- JavaScript document.cookie 属性在 (xhr) 请求后未分配且未更新。
- 有些人建议使用 localStorage 来保存会话 ID 等。但是所有脚本都可以访问它,这可能是 XSS 安全问题。 Cookie 使用 httponly 标志解决了这个问题。
- iOS:有一些修改会改变 webView 的行为以支持 cookie。但它们似乎不适用于 iOS 6 和 PhoneGap 2.5:https://groups.google.com/forum/?fromgroups=#!topic/phonegap/ZJE1nxX63ow
- 在 AppDelegate.m (v2.5) 中似乎默认启用了 Cookie。
【问题讨论】:
-
你的意思是所有脚本都可以访问localStorage?我认为每个 PhoneGap 应用程序都是独立的并且有点沙盒......不是吗?
-
也许这个插件有帮助? github.com/assembly/cordova-cookie-jar
标签: cordova cookies xmlhttprequest