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

Posted

技术标签:

【中文标题】无法在 Phonegap iOS 的 document.cookie 中设置域?【英文标题】:Not able to set domain in document.cookie in Phonegap iOS? 【发布时间】:2013-12-11 07:17:31 【问题描述】:

在 phonegap ios 构建中,当我使用带有域的 document.cookie 设置 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 代码。

【问题讨论】:

我不知道cookie,但也可以使用local Storage 来存储值。 diveintohtml5.info/storage.html 【参考方案1】:

请查看以下网址

Where cookie is managed in phonegap app with jquery?

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

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

在电话间隙

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。 你能告诉我确切的要求吗?为什么要为 facebook 设置 cookie? 它不仅仅适用于 Facebook。而不是我的实际域,我使用了 facebook。它可以是任何域。我想在 phonegap iOS 应用程序中使用 javascript 在 cookie 中设置会话值和域。 我个人建议不要那样做。只需通过 facebook/twitter 等登录做一件事。获取他们的 id,将该 id 和 domail 存储在 localStorage 中,并以这种方式维护您的功能。因为它在 phonegap 应用程序中创建了 cookie 问题。 如果我错了,请纠正我。如果您存储 cookie,并且当我们提出请求时,cookie 值会被自动获取。此功能已在同一应用程序的桌面版本中实现,并且工作正常。现在我正在使用 Phonegap 将桌面版本迁移到 iPad。【参考方案2】:

这就是我解决问题的方法。为了设置 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 并执行同步或异步请求。

【讨论】:

以上是关于无法在 Phonegap iOS 的 document.cookie 中设置域?的主要内容,如果未能解决你的问题,请参考以下文章

PhoneGap:无法在 ios 中更改 html5 音频对象的音量

无法在 Windows phone 和 iOS 中安装 Phonegap 构建的应用程序

Phonegap PushPlugin 无法接收通知 ios

PhoneGap 文件下载在 IOS 设备上无法正常工作

无法使用xcode phonegap在ios中隐藏状态栏

无法在 iOS 的 PhoneGap 中获取文件路径