为什么我在 AJAX 托管的本地与远程之间存在差异?

Why do I have differences with AJAX hosted local vs remote?

我想我的部分回答与 "same-origin" 有关,但我仍然不完全清楚它何时适用以及何时不适用(或者为什么它在一个实例中有效,但在其他实例中不是解决方案例)。

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

我的 AWS 托管 php 代码提供以下帮助解决 "same origin":

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

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

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

如果我 copy/paste AJAX URL 进入我的浏览器,它会正确地从 AWS 中提取 JSON 数据。

为了解决问题,我将输出转储到 console.log。 jQuery AJAX "error" 部分被调用而不是 "success" 部分。如果我在 Firefox 中使用 File Open 调用 index.html 文件(调用 JS),或者如果我调用本地 apache 托管的 index.html 文件 jQuery,则会出现相同的 "error" 结果ajax 跳转到 "error" 部分。

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

如果有人可以帮助澄清,那就太好了 - 我曾两次花时间解决只存在于我的开发环境中但在生产环境中工作正常的问题 - 令人沮丧!

提前致谢

您是否已在 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 __