使用 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 结果

在phonegap中创建带有响应式图像选项的jquery移动应用程序

phonegap+jquery 手机获取位置

使用 jquery 的 Phonegap 更改图像 src 在 Android 上不起作用