2011-02-26 44 views
11

我的本地iphone应用程序,使用jquery的phonegap开发(所以它的浏览器基于),可以登录到Web服务器,一旦登录用户可以访问他们的资源。一旦用户通过身份验证,服务器就会在Cookie中设置会话ID。cookie在jquery的phonegap应用程序中管理?

我对这个方案没有任何问题,但我想知道在哪里存储cookie,因为当我做alert(document.cookie)时,它会返回空字符串。

jQuery中的ajax函数有可能在内部管理cookie并将它发送给同一个域的每个请求?

+0

看来每个移动应用程序的iphone沙箱浏览器环境。我认为这可能是原因。 – katsuya 2011-03-31 10:47:31

回答

14

如果您想为您添加到您的appDelegate.m文件的应用程序来自动管理cookie:

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,直到我发现了第一种方法。

+2

第一种方法不适用于我的iOS5模拟器,看起来像Apple改变了行为。第二种方法工作正常。 – Chris 2012-05-23 19:56:04

+1

这适用于ajax请求。但是,如何处理图像和其他资源。 – gviswanathan 2013-02-05 11:14:51

+0

@Chris:这种方法应该适用于iOS5,请确保您将代码添加到正确的文件中。 – 2013-02-05 18:52:33

相关问题