我正在开发一个使用sencha touch,HTML5和phonegap作为包装器的移动网络应用程序.
我正在使用PHP身份验证(Cookie)和ajax请求.在safari或chrome上一切正常,但在使用phonegap(webview)进行部署后,它再也无法工作了......
任何帮助,将不胜感激 :)
更多细节:
我的应用程序的所有数据都通过ajax请求加载到我的服务器组件"mobile.php".我使用基本的PHP-Auth来验证用户:
普通的safari网站和webview有什么区别?
(注意:另请参阅相关问题浏览器是否可以对XSS jquery.getJSON()请求中的标头中指定的Set-Cookie做出反应?)
我似乎无法在JSON操作的请求标头中设置cookie(其名称为mwLastWriteTime).请求本身是Freebase MQL教程中的一个简单的请求,否则它工作正常:
// Invoke mqlread and call the function below when it is done.
// Adding callback=? to the URL makes jQuery do JSONP instead of XHR.
jQuery.getJSON("http://api.sandbox-freebase.com/api/service/mqlread?callback=?",
{query: JSON.stringify(envelope)}, // URL parameters
displayResults); // Callback function
Run Code Online (Sandbox Code Playgroud)
我希望我能用以下内容设置这个cookie:
$.cookie('mwLastWriteTime', value, {domain: ".sandbox-freebase.com"});
Run Code Online (Sandbox Code Playgroud)
不幸的是,在传出请求标题中查看FireBug我只看到:
Host api.sandbox-freebase.com
User-Agent [...]
Accept */*
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 115
Connection keep-alive
Referer [...]
Run Code Online (Sandbox Code Playgroud)
但是如果我没有指定域(或者我是否明确指定了请求站点的域),我可以mwLastWriteTime在头部显示本地请求.由于.sandbox-freebase.com域名拥有这些cookie,它们不应该与GET一起旅行吗?或者是否需要某种解决方法?
我的代码都是JavaScript,我想设置这个cookie,然后立即调用getJSON.