gpt4 book ai didi

javascript - 为什么 Angular JS $http.get() 在此代码中不起作用?

转载 作者:行者123 更新时间:2023-12-03 08:12:55 26 4
gpt4 key购买 nike

我正在尝试从链接获取 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 &amp; Canada</a>
<p> {{message}} </p>
</body>
</html>

最佳答案

正如评论中已经指出的,现代浏览器不能简单地通过 AJAX 请求任意 URL。此限制完全是有意为之,称为 Same-Origin Policy 。默认情况下,浏览器只能向执行 JavaScript 的同一域执行 AJAX 请求。

通常,您可以采取几种选择。

  1. 当请求的站点在其 HTTP 响应中包含跨源资源共享 (CORS) header 时,允许跨域请求,该 header 通常如下所示:

    Access-Control-Allow-Origin: http://yoursite.com

    当然,这只是当您控制所请求内容的域时的一个选项。如果您正在向第 3 方站点执行请求,通常您自己无能为力。

    顺便说一句,您还应该能够在浏览器控制台中看到相应的错误消息。

  2. 在您的域上使用服务器端脚本请求外部内容,例如在您的上使用 PHP 或[在此处插入随机服务器端脚本语言]脚本/em> 然后您通过 AJAX 请求的服务器。这样,您就可以解决同源策略,因为用户的浏览器现在可以请求您自己的域上的资源。

关于javascript - 为什么 Angular JS $http.get() 在此代码中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34073281/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com