2016-05-11 4 views
2

Ich weiß, es gibt viele doppelte Fragen.Ich habe versucht alle Lösungen gegeben, aber immer noch nicht funktioniert.Angularjs Request-Header-Feld Access-Control-Erlaube-Header ist nicht erlaubt von Access-Control-Erlaube-Header in Preflight-Antwort

XMLHttpRequest kann http://localhost:3000/api/create nicht geladen werden. Anforderungsheaderfeld "Zugriffssteuerung - Zulassen - Header" ist in der Preflight-Antwort von Access-Control-Allow-Headers nicht zulässig.

AngularJS Code

$httpProvider.defaults.headers.common = {}; 
     $httpProvider.defaults.headers.post = {}; 
     $httpProvider.defaults.headers.put = {}; 
     $httpProvider.defaults.headers.patch = {}; 
     $httpProvider.defaults.headers.get = {}; 
     $httpProvider.defaults.headers.common['Access-Control-Allow-  Headers'] = '*'; 
     $httpProvider.defaults.useXDomain = true; 
     delete $httpProvider.defaults.headers.common['X-Requested-With']; 

     $httpProvider.interceptors.push(['$injector',function($injector) { 
      var mainFactory = $injector.get('mainFactory'); 
      return { 
       request: function(config) { 
        var token = mainFactory.getToken(); 
        config.headers.Authorization = 'Basic '+token; 
        return config; 
       }, 

       response: function(response) { 
        return response; 
       } 
      }; 
}]); 

NodeJS Code

app.use(function(req, res, next) { 
res.header("Access-Control-Allow-Origin", "*"); 
res.header('Access-Control-Allow-Methods','GET,PUT,POST,DELETE,OPTIONS'); 
res.header('Access-Control-Allow-Headers','Content-Type,Authorization'); 
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Accept"); 
next(); 
}); 
+0

Was passiert, wenn Sie diese Zeile entfernen? '$ httpProvider.defaults.headers.common ['Access-Control-Allow-Headers'] = '*';' –

+0

bekommen ** Request-Header-Feld Autorisierung ist nicht erlaubt von Access-Control-Erlaube-Header im Preflight Antwort ** FEHLER –

+0

Es ist eine Weile her, seit ich mit CORS gearbeitet habe, aber ich erinnere mich, dass zumindest einige Implementierungen mit der Kopfzeile "Access-Control-Allow-Origin", "*" nicht in Ordnung waren und stattdessen Sie wollten um die Ursprungsdomäne, von der die Anfrage stammt, explizit zu wiederholen. (Normalerweise zugänglich über den Header "Origin" Anfrage, wenn Sie versuchen, eine öffentliche API zu erstellen) – Katana314

Antwort

2

Danke für die comments.I fixiert es durch eine NPM-Paket installieren cors der Fehler .Ich denke, war auf der Serverseite wie @ Katana314 erwähnt.

$httpProvider.defaults.headers.common = {}; 
    $httpProvider.defaults.headers.post = {}; 
    $httpProvider.defaults.headers.put = {}; 
    $httpProvider.defaults.headers.patch = {}; 
    $httpProvider.defaults.headers.get = {}; 
    $httpProvider.defaults.headers.common['Access-Control-Allow-Headers'] = '*'; 
    $httpProvider.defaults.useXDomain = true; 
    delete $httpProvider.defaults.headers.common['X-Requested-With']; 

alle diese Standard-Header können auch removed.Its sein adaequat.

+0

Diese sind nicht Server-Seite. :) –

1

das ist Backend-Problem. wenn die Verwendung Segel api auf Back-End-Änderung cors.js und fügen Sie Ihre alle Header fileds hier

module.exports.cors = { 
    allRoutes: true, 
    origin: '*', 
    credentials: true, 
    methods: 'GET, POST, PUT, DELETE, OPTIONS, HEAD', 
    headers: 'Origin, X-Requested-With, Content-Type, Accept, Engaged-Auth-Token' 
}; 
-1
return $http.post(
    "url", 
    formData, 
    { 
    transformRequest: angular.identity, 
    headers: {"Content-Type": undefined} 
    } 
) 
Verwandte Themen