[英]Why is Angular JS $http.get() not working in this code?
我正在嘗試從鏈接獲取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>
正如評論中已經提到的那樣,現代瀏覽器不能簡單地通過AJAX請求任意URL。 此限制完全是故意的,稱為“ 同源策略” 。 默認情況下,瀏覽器只能向執行JavaScript的同一域執行AJAX請求。
通常,您可以采取一些選擇。
當所請求的站點在其HTTP響應中包含跨域資源共享 (CORS)標頭時,就允許跨域請求,該標頭通常如下所示:
Access-Control-Allow-Origin: http://yoursite.com
當然,只有在您控制要向其請求內容的域時,這才是一種選擇。 如果您要執行對第三方網站的請求,那么通常您自己無能為力。
順便說一句,您還應該能夠在瀏覽器控制台中看到相應的錯誤消息。
使用您的域名的服務器端腳本,例如使用PHP或[此處插入隨機的服務器端腳本語言] 你的服務器,你然后通過Ajax請求對劇本要求外國內容。 這樣,您可以解決“同源策略”,因為用戶的瀏覽器現在可以在您自己的域上請求資源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.