最近,我使用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应用程序工作有点奇怪,但它在我的新网络服务器域上无效。
任何人都知道该怎么做?
答案 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无法通过浏览器访问其他域。
检查以下链接: