无法在Phonegap iOS的document.cookie中设置域名?

时间:2013-12-11 07:17:31

标签: javascript ios cordova session-cookies

在phonegap iOS构建中当我使用带有域的document.cookie设置cookie来存储会话值时,我无法做到。

我检索时给了我空饼干。您能否指导我如何在Phonegap iOS应用程序中使用域设置cookie。

当我尝试设置没有域名的cookie时,它的工作正常。但我的请求将在没有域的情况下失败 我使用下面的代码。

document.cookie = "SESSION=" + SESSION +"; path=/; domain=.facebook.com";

but when i try below code its working.

document.cookie = "SMSESSION=" + SMSESSION +"; path=/;";

但没有会话我的应用程序将失败。

还尝试了document.domain,它打破了我的javascript代码。

2 个答案:

答案 0 :(得分:0)

请查看以下网址

Where cookie is managed in phonegap app with jquery?

你必须在appdelegate.m中设置以下代码

NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage 
                                  sharedHTTPCookieStorage]; 
[cookieStorage setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways]; 

和在phonegap中

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);

希望它能帮到你

答案 1 :(得分:0)

这就是我解决问题的方法。要设置cookie我已经创建了phonegap插件并使用了原生的http客户端。通过本机客户端设置cookie和域后,使用javascript的普通http客户端工作正常。

用于设置Cookie的iOS phonegap插件代码。

NSDictionary *cookieProperties = [NSDictionary dictionaryWithObjectsAndKeys:
                              @".domain.com", NSHTTPCookieDomain,
                              @"/", NSHTTPCookiePath,
                              @"SESSION", NSHTTPCookieName,
                              @"Session value",NSHTTPCookieValue,nil];
NSDictionary *cookieProperties1 = [NSDictionary dictionaryWithObjectsAndKeys:
                              @".domain.com", NSHTTPCookieDomain,
                              @"/", NSHTTPCookiePath,
                              @"some cookie", NSHTTPCookieName,
                              @"some cookie value",NSHTTPCookieValue,nil];

NSHTTPCookie *cookie1 = [NSHTTPCookie cookieWithProperties:cookieProperties1];
NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:cookieProperties];
NSArray* cookieArray = [NSArray arrayWithObjects: cookie,cookie1, nil];
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookies:cookieArray forURL:[NSURL   URLWithString:urlString] mainDocumentURL:nil];

在cookie存储中设置cookie后创建NSURLConnection并执行同步或异步请求。