phonegap:基于cookie的身份validation(PHP)不能正常工作

我正在使用sencha touch,HTML5和phonegap作为包装的移动networking应用程序。

我正在使用PHP身份validation(Cookie)和ajax请求。 一切工作正常safari或铬,但部署后phonegap(web视图)它不再工作了…

任何帮助,将不胜感激 :)

一些更多细节:

我的应用程序的所有数据都通过ajax请求加载到我的服务器组件“mobile.php”。 我使用基本的PHP-Auth来validation用户:

  1. AJAX-Request [用户名,密码] – > mobile.php – >build立会话(cookie)
  2. 所有其他请求,如果auth成功

一个普通的Safari浏览器网站和webview有什么区别?

我想到了:

您必须更改phonegap_delegate.m文件,并将以下内容添加到init方法中:

- (id) init { /** If you need to do any extra app-specific initialization, you can do it here * -jm **/ //special setting to accept cookies via ajax-request NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; [cookieStorage setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways]; return [super init]; } 

它使webview接受来自ajax请求的cookie

如果你的Phonegap AJAX请求不是像他们应该发射callback,这可能是原因。

如果您收到的响应尝试设置cookie,而您没有完成Michael的修复,那么您的(jQuery)AJAX请求将悄然失败 – 既不成功也不会错误:尽pipe服务器实际收到请求并发出回应。 即使你不关心cookie,你也必须这样做。

我希望这可以帮助别人。

我不在乎cookies,只是花了几个小时试图找出为什么callback不起火!

有一个解决scheme也可以在android上运行:

安装插件https://github.com/wymsee/cordova-HTTP来执行任意的HTTP(S)请求。

用插件替代( cordovaHTTP.get或者cordovaHTTP.post )replaceXMLHttpRequest

 cordovaHTTP.post("https://example.com/login", {email: 'xyz@example.com', passwd: "s3cr3t"}, {}, function(response) { console.log('success'); console.log(response); }, function(response) { console.log('failure'); console.log(response); }); 

响应将包含状态,数据和response.headers["Set-Cookie"] ,可以parsing名称,值,域,path甚至HttpOnly标志;-)

所述cookie可以保存在LocalStorage并在随后的请求(参见.get / .post方法的cordovaHTTP.setHeader()header参数)中发送,以在桌面浏览器上模拟经过身份validation的用户。

存储获取和删除Cookie的最佳方法是在我的应用程序中正常工作

在cookie中存储价值

 window.localStorage.setItem("key", "value"); 

在cookie中获取价值

 var value = window.localStorage.getItem("key"); 

删除cookie值

 window.localStorage.removeItem("key"); window.localStorage.clear();