【发布时间】:2015-09-15 14:07:29
【问题描述】:
我有这个使用 AngularJS 和 Onsen UI 构建的可工作的 PhoneGap 应用程序,它访问一个 PHP 文件,它在响应中获取一些数据。 php 文件位于具有简单 http 的域上,但现在我将其移至支持 https 的域,我不断遇到一些奇怪的问题。
我尝试了 AngularJS 异步获取数据的方式,还有一个 ajax 调用。
$http.get('https://blablabla.com/file.php?parameters').then(function(response) {
//SUCCESS
alert(response);
var z = response;
},function(response) {
alert("Failed");
});
它进入了 SUCCESS 部分,但我在其中的数据不正确。它应该是一个字符串(一个普通的 JSON 字符串,我会对其进行字符串化并转换为一个 json 对象)
ajax调用如下:
function httpGet(theUrl) {
var dataToReturn;
$.ajax({
type: 'GET',
url: theUrl,
cache: false,
async: false,
data: "",
success: function(data, textStatus, result) {
dataToReturn = data;
},
error: function (result, textStatus, errorThrown) {
alert("Failed to get response from server!");
}
});
return dataToReturn;
//var xmlHttp = new XMLHttpRequest();
//xmlHttp.open( "GET", theUrl, false ); // false for synchronous request
//xmlHttp.send( null );
//return xmlHttp.responseText;
};
我基本上是从 PhoneGap 应用程序调用 https 中的 php 脚本。 如果我将地址更改为 http,它可以完美运行...
我还希望您注意,PhoneGap 基本上创建了某种本地代理。不过,我不确定如何详细说明...
任何关于如何解决这个问题的想法,以获得与地址简单“http”时相同的数据?
【问题讨论】:
-
您可能需要检查 PhoneGap 代理是否在端口 443 上工作。听起来它已经在端口 80 上工作,因为那里没有问题。 Https 使用端口 443,因此请确保将代理配置为在两个端口上工作。
-
您可能想阅读
Same origin policy。 -
您能否在问题中包含为 HTTP 和 HTTPS 返回的数据样本?另外,您是否尝试过使用浏览器网络工具或 Fiddler 之类的工具来检查请求?
标签: javascript php json ajax angularjs