0

最近我为移动设备创建了一个 PhoneGap 应用程序,使用 AngularJS 作为 javascript 框架。

我有一个 PHP 后端服务于 Restful JSON 数据,构建在 Laravel PHP 框架中。

PhoneGap 应用程序使用 AngularJS 中的 $http 服务从我的 PHP 服务器请求数据,它在我的手机上完美运行。

现在我想让我的 PhoneGap 应用程序暂时在网站上可用,而不是在应用程序中。所以我将我的 PhoneGap 项目移到了一个网络服务器,但在这里它根本不起作用。尝试在自己的浏览器中使用 webapp 时出现这些错误。

“访问控制允许来源不允许来源http://somewebsite.com 。”。

我尝试向 AngularJS 添加一些配置参数,例如:

删除 $httpProvider.defaults.headers.common['X-Requested-With'];

但似乎没有任何帮助。

我觉得它在我的手机和我的 iPhone 模拟器上作为 PhoneGap 应用程序工作有点奇怪,但它在我的新网络服务器域上不起作用。

有谁知道该怎么做?

4

2 回答 2

3

最安全的方法是使用JSONP。在 laravel 中,您会执行以下操作:

Response::json(array('name' => 'Steve', 'state' => 'CA'))->setCallback(Input::get('callback'));

但是,如果您只想访问 open/public,请尝试将其添加到您的 public/.htaccess 文件中

Header set Access-Control-Allow-Headers: "Accept,Origin,Content-Type,X-Requested-With"
Header set Access-Control-Allow-Methods "GET,PUT,POST,DELETE,OPTIONS"
Header set Access-Control-Allow-Credentials: "true"
Header set Access-Control-Allow-Origin "*"
于 2013-07-22T09:03:15.023 回答
0

从移动网站访问 Web 服务时,它们应该具有访问源允许 true 设置或在 php 中启用 jsonp(非常安全的方式)。由于与应用程序不同,移动网站 JavaScript 无法通过浏览器访问其他域。

检查这些链接:

允许跨域ajax请求

于 2013-07-22T08:55:35.290 回答