我正在尝试通过最简单的AngularJS代码段连接API端点,但是有些问题阻止了我。
这是我的控制器:
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;
});
}]);
我甚至为此准备了Plunkr但也没有成功,请告诉我上述代码中的问题在哪里。
答案 0 :(得分:1)
您的问题似乎与CORS有关:基本上,如果服务器端不允许,您无法通过Ajax访问域。这是大多数现代浏览器的“安全”功能。使用命令行(例如curl
或Postman
chrome的扩展名)不会遇到此问题。
如果您拥有域https://www.persevy.com/,请确保Access-Control-Allow-Origin
标头中允许请求数据的域,以及http动词(GET
,POST
,每个http方法都有PUT
...或*
。
如果您使用的是API,则应在文档中找到有关此事项的内容。
修改强>
我在RoR中有点生疏,但是从谷歌上搜索,看起来你可以使用rails-cors宝石,或试试this gist。
基本上,它归结为将以下两个标题添加到服务器的响应中:
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: *
答案 1 :(得分:1)
在你的RoR API
app / controllers / application_controller.rb中:
before_filter :add_allow_origin_headers
def add_allow_origin_headers
response.headers['Access-Control-Allow-Origin'] = request.headers['Origin'] || '*'
end
或者您可以使用名为gem
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
的更多信息