我正在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’s documentation,默认的cookieAcceptPolicy是NSHTTPCookieAcceptPolicyAlways。
关于如何获取cookie存储和发送工作的建议受到高度赞赏。
解决方法
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存储可以令人沮丧的时候。