存储和发送不在PhoneGap应用程序中工作的http cookie

Bri*_*ngo 19 jquery ios cordova

我正在Xcode中开发一个PhoneGap应用程序,它使用web api与服务器通信.api接受标准的http请求.作为用户认证过程的一部分,设置了一个cookie,该cookie应该在http报头中传输,并随后向api发送每个请求.

在登录api的过程中,我可以清楚地看到cookie作为响应头的一部分被发回.但是,它似乎没有被存储,也没有在每次新的api调用的http请求头中发送.

为了调用api,我正在使用jQuery的$.getJSON调用.

我发现以下问题和答案:phonegap:基于cookie的身份验证(PHP)无法正常工作[webview]

上面的答案建议在app委托中设置NSHTTPCookieStorage cookieAcceptPolicyto .我试过了,似乎没有解决问题.此外,根据Apple的文档,默认是.NSHTTPCookieAcceptPolicyAlwaysinitcookieAcceptPolicyNSHTTPCookieAcceptPolicyAlways

关于如何获取cookie存储和发送工作的建议非常感谢.

Mik*_*gin 2

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

我以前也遇到过很多次类似的问题

可能的原因可能是:

1) cookie 的域与您在请求中发送的域不同,可能是由于重定向所致...例如,如果请求发送到http://www.somesite.com,则实际上重定向到http:// /somesite.com(这是真正的域名,cookie 将为 sometime.com url/domain 保存,现在为 www.somesite.com

2) cookie 上的“仅会话”和“到期日期”标头可能设置不正确,这会导致 cookie 存储丢弃它们

希望这会有所帮助,根据经验知道 cookie 存储有时会令人沮丧。