Angularjs tumblrapi$httpget

Angularjs tumblrapi$httpget,angularjs,get,tumblr,preflight,angularjs-1.6,Angularjs,Get,Tumblr,Preflight,Angularjs 1.6,我遇到了Tumblr和Angular的API问题,我不太清楚。当使用$http试图从某个博客获取信息时,它会保留“飞行前的响应无效”。我想我在看这段代码时有点眼花了。有人看看这个,告诉我我做错了什么吗?谢谢 $scope.tumblrKey = 'mldv2B4xUD5roLX8XfbYdgJhzlgLxfm8mBRuKQhBxXsUFLiqEx'; $scope.tumblrUrl = 'http://api.tumblr.com/v2/blog/whileoutriding.tumblr.c

我遇到了Tumblr和Angular的API问题,我不太清楚。当使用$http试图从某个博客获取信息时,它会保留“飞行前的响应无效”。我想我在看这段代码时有点眼花了。有人看看这个,告诉我我做错了什么吗?谢谢

$scope.tumblrKey = 'mldv2B4xUD5roLX8XfbYdgJhzlgLxfm8mBRuKQhBxXsUFLiqEx';
$scope.tumblrUrl = 'http://api.tumblr.com/v2/blog/whileoutriding.tumblr.com/info?api_key=';

$http({
  method: 'GET',
  headers: {
    'Authorization': $scope.tumblrKey
  },
  url: $scope.tumblrUrl + $scope.tumblrKey
}).then(function successCallback(response) {

    console.log('it worked', response);

  }, function errorCallback(response) {

    console.log('it did not work', response);

});

这个问题通常是因为CORS跨源资源共享。您尝试使用的第三方API应该允许来自您站点的请求。因为它似乎不允许您这样做,飞行前请求基本上检查您是否可以对该API进行GET调用,但失败了。如本文所述,有多种方法可以修复它

您可以更改
$http
请求,如下所示:

$http({
      method: 'jsonp',
      dataType: 'json',
      headers: {
        'Authorization': $scope.tumblrKey
      },
      params: {
        format: 'jsonp',
        callback: 'JSON_CALLBACK'
    },
      url: $scope.tumblrUrl + $scope.tumblrKey
    })
使用工作代码


这似乎很有效。祝你好运

我在plunkr中运行代码,得到一个错误,清楚地描述了问题
请求的资源上不存在“Access Control Allow Origin”头。
此注释中有24个答案:使用AngularJS V1.6,您不能再在JSONP请求中使用JSON_回调占位符。有关更多信息,请参阅。有趣的是,我没有意识到这一点。非常感谢。这就解释了为什么他的例子不适合我,直到我把它完全复制下来,然后把它放下。在任何情况下,这都能让我朝着正确的方向前进。非常感谢。