【发布时间】:2015-06-15 07:42:03
【问题描述】:
我正在编写我的 webApp,并且正在使用 AngularJS。在这个应用程序中,我创建了一个名为 script.js 的文件,并报告了这段代码:
var modulo = angular.module('progetto', ['ngRoute']);
// configure our routes
modulo.config(function ($routeProvider, $httpProvider) {
$routeProvider
// route for the home page
.when('/', {
templateUrl: 'listaFilm.html',
controller: 'listaController'
})
// route for the description page
.when('/:phoneName', {
templateUrl: 'description.html',
controller: 'descriptionController'
});
$httpProvider.defaults.headers.common['Access-Control-Allow-Origin'] = '*';
});
modulo.controller('listaController', function ($scope, $http) {
$http.get('https://api.getevents.co/event?&lat=41.904196&lng=12.465974').success(function (data) {
$scope.names = data;
}).
error(function (data, status) {
$scope.names = "Request failed";
});
});
使用这段代码,我按照 RESTful 原则调用 API。当我运行代码时,我遇到了这个问题:
XMLHttpRequest 无法加载 https://api.getevents.co 否 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://localhost:8383” 访问。
在网上阅读后,我了解到我遇到了一个名为 CORS 的问题...我尝试了几种建议的解决方案,但都没有解决问题。
我该如何解决这个问题?
我必须添加什么代码来修复它?
【问题讨论】:
-
https://api.getevents.co需要在其响应中提供 CORS 标头。您是否控制(或者您可以以其他方式配置)https://api.getevents.co的服务器?服务器需要改变它的行为。 -
并非所有 API 都可以通过 ajax 访问,如果它们未启用 CORS 或未启用 jsonp。检查 API 文档或使用代理
-
我控制,这就是响应:我们的 API 支持 CORS(跨源资源共享),这意味着它可以使用 JavaScript 直接从浏览器调用,或者更传统地使用后端从服务器调用-您选择的结束语言。
-
我应该设置 $http 标头,但我不这样做
-
这个答案可能有用:stackoverflow.com/a/58064366/7059557
标签: javascript html angularjs xmlhttprequest cors