为什么我与AJAX托管的本地vs远程有差异?

时间:2015-06-24 12:11:44

标签: javascript jquery ajax same-origin-policy

我想我的部分答案与"同源"但我还不是很清楚它何时适用,何时不适用(或者为什么它在一个实例中起作用,但在其他情况下不是解决方案)。

我正在使用最新的j Query, jQuery mobile and Apache/MySQL/PHP堆栈。客户是Windows 7/Firefox 38, or iPad/PhoneGap

我的AWS托管的PHP代码提供以下帮助解决"相同的起源":

$http_origin = $_SERVER['HTTP_ORIGIN'];
header("Access-Control-Allow-Origin: $http_origin");

我的应用程序的Phone Gap版本按预期工作,从我的AWS服务器检索数据并呈现它检索到的数据。

从笔记本电脑浏览器中调用完全相同的代码失败。为什么呢?

如果我将AJAX URL复制/粘贴到我的浏览器中,它会正确地从AWS中提取JSON数据。

为了解决这个问题,我将输出转储到console.log。 jQuery AJAX"错误"部分被调用而不是成功"一部分。同样的错误"如果我在Firefox中使用File Open调用index.html文件(它调用JS),或者如果我调用本地apache托管的index.html文件,jQuery ajax会跳转到"错误"部分。

所以,如果我的phonegap应用程序有效,但我的笔记本电脑没有,为什么?我的意思是,我看到我的应用程序类似于笔记本电脑的网页浏览器。它们实际上与我的Web服务器的起源不同,所以我希望它们都可以工作,或者两者都失败。

如果有人可以帮助澄清它会很棒 - 我有两次花时间追逐一个只存在于我的开发环境中但在生产中工作得很好的问题 - 这令人沮丧!

提前全部谢谢

1 个答案:

答案 0 :(得分:0)

你的phonegap配置中有白名单吗? http://docs.phonegap.com/en/4.0.0/guide_appdev_whitelist_index.md.html

例如:

访问google.com:

<access origin="http://google.com" />

__阅读它应该改进:https://github.com/phonegap/phonegap-app-developer/issues/169 __