PhoneGap应用程序中HTTP Cookie的存储和发送不起作用

19
我正在使用Xcode开发PhoneGap应用程序,通过Web API与服务器通信。该API接受标准的HTTP请求。作为用户认证过程的一部分,设置了一个cookie,该cookie应在每个后续请求到API中随HTTP头一起传输。
在调用API登录时,我可以清楚地看到cookie作为响应头的一部分被发送回来。然而,它似乎没有被存储,也没有在每个新的API调用中随HTTP请求头一起发送。
为了调用API,我正在使用jQuery的$.getJSON调用。
我找到了以下问题和答案:phonegap: cookie based authentication (PHP) not working [webview]
上面的答案建议在应用程序委托的init中将NSHTTPCookieStorage cookieAcceptPolicy设置为NSHTTPCookieAcceptPolicyAlways。我已经尝试过,但似乎并没有解决这个问题。此外,根据Apple的文档,默认的cookieAcceptPolicyNSHTTPCookieAcceptPolicyAlways
非常感谢有关如何使cookie存储和发送工作的建议。

2
我在我的应用程序中确切地使用了这个,它在iPhone/iPad上运行良好... - Leon
你有查看过这个话题吗?https://dev59.com/eFLTa4cB1Zd3GeqPXiE1 - sleepwalker
我看过类似的话题,但据我所知,PhoneGap可以做这些事情... 这意味着您可以向API端点发出请求,如果这是为桌面设置部署而设计,则通常无法访问这些端点。http://wiki.phonegap.com/w/page/42450600/PhoneGap%20Ajax%20Sample - Ryan Lanciaux
1
我建议使用LocalStorage作为替代cookie的可行选择。 - Brian Seim at EvoDynamic Inc
1个回答

2

CookieStorage 应该并且确实保存 cookie,以便在后续请求中使用。如果您使用 NSURLRequest,它甚至会自动添加 cookie...但前提是这些请求是针对设置了 cookie 的相同域的。

我以前也遇到过类似的问题,

可能的原因包括:

1)cookie 的域与您发送请求时不同,可能是由于重定向导致的...例如,如果请求发送到 http://www.somesite.com,实际上正在重定向到 http://somesite.com(那才是真正的域名),则 cookie 将保存为 somesite.com 的 URL/域,并非 www.somesite.com.

2)可能 cookie 上设置的“仅会话”和“过期日期”标头不正确,导致 cookie 存储将其丢弃。

希望这可以帮到您,有经验的人都知道 CookieStorage 有时会让人沮丧。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接