无法在 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 构建的应用程序