如何在 AngularJ 中启用 CORS

2022-08-30 02:42:47

我使用JavaScript for Flickr照片搜索API创建了一个演示。现在我正在将其转换为AngularJs。我在互联网上搜索并找到了下面的配置。

配置:

myApp.config(function($httpProvider) {
  $httpProvider.defaults.useXDomain = true;
  delete $httpProvider.defaults.headers.common['X-Requested-With'];
});

服务:

myApp.service('dataService', function($http) {
    delete $http.defaults.headers.common['X-Requested-With'];
    this.flickrPhotoSearch = function() {
        return $http({
            method: 'GET',
            url: 'http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=3f807259749363aaa29c76012fa93945&tags=india&format=json&callback=?',
            dataType: 'jsonp',
            headers: {'Authorization': 'Token token=xxxxYYYYZzzz'}
         });
     }
});

控制器:

myApp.controller('flickrController', function($scope, dataService) {
        $scope.data = null;
        dataService.flickrPhotoSearch().then(function(dataResponse) {
            $scope.data = dataResponse;
            console.log($scope.data);
        });
    });

但我仍然得到了同样的错误。以下是我尝试过的一些链接:

XMLHttpRequest 无法加载 URL。访问控制-允许-源不允许的源

http://goo.gl/JuS5B1


答案 1

你没有。您发出请求的服务器必须实现 CORS 以从您的网站授予 JavaScript 访问权限。您的 JavaScript 无法授予自己访问其他网站的权限。


答案 2

我遇到了类似的问题,对我来说,它归结为在接收端响应中添加以下HTTP标头:

Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Origin: *

您可能不希望在最后使用 ,而只使用发送数据的主机的域名。喜欢**.example.com

但这只有在您有权访问服务器的配置时才可行。