使用 jquery 在 phonegap 应用程序中管理 cookie 的位置?
Posted
技术标签:
【中文标题】使用 jquery 在 phonegap 应用程序中管理 cookie 的位置?【英文标题】:Where cookie is managed in phonegap app with jquery? 【发布时间】:2011-07-04 16:52:18 【问题描述】:我的原生 iphone 应用程序是使用带有 jquery 的 phonegap 开发的(因此基于浏览器),可以登录到 Web 服务器,一旦登录,用户就可以访问他们的资源。一旦用户通过身份验证,服务器就会在 cookie 中设置会话 ID。
我对这个方案没有任何问题,但我想知道 cookie 存储在哪里,因为当我执行 alert(document.cookie) 时,它返回空字符串。
jquery 中的 ajax 函数是否有可能在内部管理 cookie 并将其发送给同一个域的每个请求?
【问题讨论】:
似乎iphone沙盒浏览器环境适用于每个移动应用程序。我认为这可能是原因。 【参考方案1】:如果您希望您的应用自动管理 cookie,请将其添加到您的 appDelegate.m 文件中:
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage
sharedHTTPCookieStorage];
[cookieStorage setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
如果你想自己管理会话信息,你可以像这样做所有的ajax请求:
var request =
url: my_server_url,
success: function(response, status, request)
var header = request.getAllResponseHeaders();
var match = header.match(/(Set-Cookie|set-cookie): (.+?);/);
if(match)
my_saved_cookie = match[2];
,
if(my_saved_cookie)
request.headers = Cookie: my_saved_cookie ;
$.ajax(request);
在我的应用程序中,我使用第二种方法自己管理会话 cookie,直到我发现第一种方法。
【讨论】:
第一种方法在我的 ios5 模拟器上不起作用,看起来 Apple 改变了行为。第二种方法效果很好。 这适用于 ajax 请求。但是,应该如何处理图像和其他资源。 @Chris:这个方法应该适用于 iOS5,确保你在正确的文件中添加代码。 @gviswanathan:第一种方法应该适用于任何请求 AFAIK 但是 getAllResponseHeaders() 方法不检索 Set-Cookie,至少在 Chrome 中是这样以上是关于使用 jquery 在 phonegap 应用程序中管理 cookie 的位置?的主要内容,如果未能解决你的问题,请参考以下文章
使用 jquery 在 phonegap 应用程序中管理 cookie 的位置?
phonegap 2.2 + jQuery + Mapkit 插件
无法在 iPhone 应用上使用 PhoneGap 和 jQuery 获取 JSON 结果