没有访问控制允许使用$ http和angular的原始标头

时间:2015-10-27 14:00:50

标签: angularjs

我正在尝试使用angular来使用Flickr API,但每当我尝试发出请求时,我都会收到此错误。我看过网上但似乎无法得到一个不错的答案

XMLHttpRequest无法加载https://api.flickr.com/services/feeds/photos_public.gne?tags=potato&tagmode=all&format=json。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“http://localhost:8000”访问。

以下是我的请求代码 - 我尝试使用angular 100%执行此操作,而不必运行服务器

FlickrController.$inject = ['$http']


function FlickrController($http){
  var self = this 
  this.newPhoto = {}
  // this.photos = Photo.query();

  this.getPhoto = function(){
    console.log('gettinghere')
    $http
    .get('https://api.flickr.com/services/feeds/photos_public.gne?tags=potato&tagmode=all&format=json')
    .then(function(response){
      var photoData = response.data
      console.log(photoData)
      self.addPhoto(photoData)
    })
  }

1 个答案:

答案 0 :(得分:0)

这不是AngularJS的事情,而是一般的服务器通信。

必须从服务器发送Access-Control-Allow-Origin。请求由您的javascript应用程序执行。但是由于域名不同而且没有给出Access-Control-Allow-Origin,浏览器停止传递响应。

我不确定是否可以设置Flicker api来发送它。但是可以在您自己的服务器上执行端点,这会将您的请求发送到闪烁。因为正如我所说。只有浏览器停止了响应。

如果您没有任何后端(某些测试应用),您可以使用某种代理 - https://www.npmjs.com/package/proxy-middleware

然后你的api请求localhost:8000 / api /并且会有代理与原始的闪烁api通信。