So aktivieren Sie CORS in AngularJs

Ich habe eine Demo mit JavaScript für die Flickr-Fotosuch-API erstellt. Jetzt konvertiere ich es in die AngularJs. Ich habe im Internet gesucht und unten Konfiguration gefunden.

Aufbau:

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

Bedienung:

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=3f807259749363aaa29c7601,2fa93945&tags=india&format=json&callback=?',
            dataType: 'jsonp',
            headers: {'Authorization': 'Token token=xxxxYYYYZzzz'}
         });
     }
});

Regler:

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

Trotzdem habe ich den gleichen Fehler bekommen. Hier sind einige Links, die ich ausprobiert habe:

XMLHttpRequest kann URL nicht laden. Origin wird von Access-Control-Allow-Origin nicht zugelassen

http://samurails.com/tutorial/cors-with-angular-js-and-sinatra/

BEARBEITEN:

Ich habe auf Vorschlag von @Quentin einen Proxy-Server in node.js erstellt:

var http = require('http');
var url = require('url');
var fs = require('fs');
var server;

server = http.createServer(function (req, res) {
    // your normal server code
    var path = url.parse(req.url).pathname;
    fs.readFile(__dirname + path, function (err, data) {
        if (err) {
            return send404(res);
        }
        res.writeHead(200, {'Content-Type':path == 'json.js' ? 'text/javascript' : 'text/html'});
        res.write(data, 'utf8');
        res.end();
    });
}),
server.listen(8001);
//using express to load customizes static files
var express = require("express"),
    app = express();

app.all("/api/*", function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Cache-Control, Pragma, Origin, Authorization, Content-Type, X-Requested-With");
    res.header("Access-Control-Allow-Methods", "GET, PUT, POST");
    return next();
});
app.use("/js", express.static(__dirname + '/js'));
app.listen(3001);

Final Edit

Ich habe den Authorization-Header entfernt

headers: {'Authorization': 'Token token=xxxxYYYYZzzz'}

und es läuft gut. Ich habe was ich wollte. Vielen Dank an alle für die Teilnahme an dieser Frage

Antworten auf die Frage(7)

Ihre Antwort auf die Frage