Angularjs 使用Angular factory连接到API端点
我试图通过最简单的AngularJS代码段与API端点连接,但遇到了一些问题,使我无法继续 这是我的控制器:Angularjs 使用Angular factory连接到API端点,angularjs,angularjs-scope,angularjs-ng-repeat,Angularjs,Angularjs Scope,Angularjs Ng Repeat,我试图通过最简单的AngularJS代码段与API端点连接,但遇到了一些问题,使我无法继续 这是我的控制器: app.controller('appController', ['$scope', 'skills', function($scope, skills) { skills.success(function(data) { $scope.skillsList = data; }); } ]); 我的工厂: app.factory('skills', ['$http', fu
app.controller('appController', ['$scope', 'skills',
function($scope, skills) {
skills.success(function(data) {
$scope.skillsList = data;
});
}
]);
我的工厂:
app.factory('skills', ['$http', function($http) {
return $http.get('https://www.persevy.com/skills')
.success(function(data) {
return data;
})
.error(function(err) {
return err;
});
}]);
我甚至为此准备了一个解决方案,但也没有成功,请告诉我上述代码中的问题在哪里。您的问题似乎与以下方面有关:基本上,如果服务器端不允许通过Ajax访问域,则无法通过Ajax访问域。这是大多数现代浏览器的“安全”功能。使用命令行,例如
curl
或Postman
chrome的扩展,您不会遇到这个问题
如果您拥有该域,请确保请求数据的域在访问控制允许来源
标题中以及http谓词(GET
、POST
、PUT
…或*
对于每个http方法)中都是允许的
如果您使用的是API,您应该在文档中找到与此相关的内容
编辑
我对RoR有点生疏,但从我的谷歌搜索结果来看,你可以使用宝石,或者试试
基本上,可以将以下两个头添加到服务器的响应中:
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: *
在app/controllers/application_controller.rb中的
RoR API
before_filter :add_allow_origin_headers
def add_allow_origin_headers
response.headers['Access-Control-Allow-Origin'] = request.headers['Origin'] || '*'
end
或者您可以使用名为rack cors
#Gemfile
gem 'rack-cors'
#config/application.rb
config.middleware.use Rack::Cors do
allow do
origins '*'
resource '*', :headers => :any, :methods => [:get, :post, :options]
end
end
这将允许来自不同应用程序的请求,为您解决问题关于gem的更多信息看起来像CORS问题..访问不同的域代码似乎是可靠的,在控制台中得到了这一点XMLHttpRequest无法加载。请求的资源上不存在“Access Control Allow Origin”标头。因此不允许访问源“”。确定如何修复它并允许访问?您的API写入了什么?(Rails?)但是应该允许从同一个域访问吗?是吗?否,您必须特别允许服务器端的域。您可以使用
*
允许所有域进行测试。您能告诉我们您的服务器使用的是什么语言吗?这是一个浏览器功能,如果你使用curl
发布数据,你就不会有这个问题。这是真的,从curl
我可以毫无问题地访问,这个应用程序是用RoR编写的,怎么允许呢?我的Rail已经生锈了,但是谷歌搜索CORS Rails,你应该找到你想要的。参见编辑