AngularJS和Phonegap Cross Origin Access

时间:2013-07-22 08:43:03

标签: angularjs cordova laravel

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

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

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

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

  

Access-Control-Allow-Origin不允许“原始http://somewebsite.com。”。

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

  

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

但似乎没有任何帮助。

我发现它在我的手机和我的iPhone模拟器中作为PhoneGap应用程序工作有点奇怪,但它在我的新网络服务器域上无效。

任何人都知道该怎么做?

2 个答案:

答案 0 :(得分: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 "*"

答案 1 :(得分:0)

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

检查以下链接:

allow cross domain ajax requests