2015-11-10 39 views
0

我试图从雅虎财务获得头条新闻,下面的代码似乎不起作用。它直接进入错误处理程序。我尝试了一些其他的URL,他们似乎也没有工作。我在android模拟器中用离子测试了这个代码。我究竟做错了什么?获取XML Feed中的角度HTTP的错误响应

$http.get("http://feeds.finance.yahoo.com/rss/2.0/headline?s=GOOG&region=US&lang=en-US") 
    .success(function(data) { 
     $log.log(data); 
    }) 
    .error(function(data) { 
     $log.log("ERROR: " + data); 
});  

UPDATE:通过米奇的链接阅读 ,你很可能会找到解决的办法有像我一样。对我而言,我必须在启动铬时使用--disable-web-security。显然,对于这些类型的http请求,allow origin plugin是不够的。

此外,如果您在模拟器中遇到问题,请勿使用实时重新加载。这似乎会导致http请求出现问题。

回答

0

如果你看看你的开发者控制台,您将看到此消息:No 'Access-Control-Allow-Origin' header is present on the requested resource.

这意味着,接收到响应确实允许本地请求,所以你的浏览器阻止它。由于安全原因,JavaScript受“同源策略”限制,因此恶意脚本无法联系远程服务器并发送敏感数据。关于这种问题的更多细节在这里:https://stackoverflow.com/a/9311585/2298988

这只是因为你在浏览器中测试你的应用程序。 如果您构建您的Ionic应用程序并在设备上进行测试,它应该完美运行

要在浏览器中测试您的应用程序,您必须禁用网络安全。你应该做什么仅用于开发目的,从不上网冲浪。

这里是一个文章,解释了如何关闭Chrome Web安全: Disable same origin policy in Chrome

似乎有一个插件,这样做的Firefox,但我还没有尝试过: Disable firefox same origin policy

+0

谢谢。当我使用相同的原始扩展名时,我认为我已经涵盖了这一点,但显然我仍然需要在启动时包含标志--disable-web-security。 – AppTest

+0

另外你说,如果我建立它并在设备上测试它会工作。但这是否意味着它不能在模拟器中工作? – AppTest

+0

它也应该在模拟器中工作。这个安全来自浏览器。在科尔多瓦,它由白名单插件处理https://github.com/apache/cordova-plugin-whitelist – Mitch