2013-07-22 84 views
0

最近,我为移动设备创建了一个PhoneGap应用,使用AngularJS作为javascript框架。AngularJS和Phonegap Cross Origin访问

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

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

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

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

我试图一些配置参数添加到AngularJS如:

删除$ httpProvider.defaults.headers.common [ 'X-请求-随着'];

但似乎没有任何帮助。

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

任何人都知道该怎么办?

+0

你如何管理使用Web服务在电话中不允许访问起源真实? –

回答

3

最安全的方式是使用JSONP。 在laravel你会做这样的事情:如果你只是想访问开/公共

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

然而,你可以添加以下到您的公共/ .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 "*" 
+0

感谢您的回答。 仅仅向公众开放我的REST Api会足够安全吗? Iv已经在Laravel的所有路由中创建了AUTH过滤器,因此只有经过身份验证的用户才能访问该API。 – PeterPanen

+0

如果你有担保,我不明白为什么不。 – Ryun

0

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

检查这些链接:

allow cross domain ajax requests