我正在尝试从链接获取RSS源。 ng-click
函数getNews("SomeText")
正在运行,我已经通过填充带有一些文本的容器来确认它。但是,$http.get()
无效。我现在只想显示数据,我稍后会解析它。
这是我的Angular JS代码。
var app = angular.module("app",[]);
app.controller("newsController", function($scope, $http) {
$scope.getNews = function(topic) {
if (topic === "NAmerica") {
//The program enters this part, I have confirmed, only $http.get() doesn't work
$http.get('http://www.usnews.com/rss/education')
.then(function (response) {
$scope.message = response;
});
}
};
});
我的HTML文件具有以下结构:
<html ng-app="app">
<body ng-controller="newsContainer">
<a href="#" id="NAmerica" ng-click="getNews('NAmerica')">US & Canada</a>
<p> {{message}} </p>
</body>
</html>
答案 0 :(得分:1)
正如评论中已经提到的,现代浏览器不能简单地通过AJAX请求任意URL。这种限制完全是故意的,称为Same-Origin Policy。默认情况下,浏览器只能对执行JavaScript的同一域执行AJAX请求。
通常,您可以选择几个选项。
当请求的站点在其HTTP响应中包含跨源资源共享(CORS)标头时,允许跨域请求,该标头通常如下所示:
urxvt
当然,当您控制要从中请求内容的域时,这只是一个选项。如果您正在向第三方网站执行请求,通常您无法自行完成此任务。
顺便说一下,您还应该能够在浏览器控制台中看到相应的错误消息。
使用域上的服务器端脚本请求外部内容,例如在 your <上使用PHP或 [在此处插入随机服务器端脚本语言] 脚本/ em>然后通过AJAX请求的服务器。这样,您可以解决同源策略,因为用户的浏览器现在可以在您自己的域中请求资源。