2016-08-06 59 views
1

Ich verwende MEAN Stack User Registration and Login Example & Tutorial als Basis für meine App. Es fügt einen Auth-Header jeder Anfrage in der Durchlauffunktion:Wie Autorisierungsheader von Anfrage entfernen

$http.defaults.headers.common['Authorization'] = 'Bearer ' + $window.jwtToken; 

Ich möchte Bilder Cloudinary hochladen, aber ich bin immer diese Fehlermeldung:

XMLHttpRequest cannot load https://api.cloudinary.com/v1_1/xxxx/upload . Request header field Authorization is not allowed by Access-Control-Allow-Headers in preflight response.

Wie kann ich diesen Header entfernen speziell für Anfragen an Cloudinary?

Antwort

9

Sie benötigen einen Interceptor, der nach der URL der Anfrage sucht und die Kopfzeile löscht, wenn sie übereinstimmt. Alternativ können Sie den Konfigurationsparameter $http verwenden.

Mit dem Parameter:

$http.post('https://api.cloudinary.com/v1_1/' + someId + '/upload', data, { headers: {} });

ein Abfangjäger Verwendung:

.factory('cloudinaryInterceptor', function() { 
return { 
    request: function(config){ 
    var authHeader = config.headers('authorization'); 
    //Check for the host 
    var regex = /api.cloudinary.com/i; 
    if(regex.test(config.url)) 
    //Detach the header 
    delete config.headers.authorization; 
    return config; 
    } 
} 
}); 

Denken Sie an die Abfangjäger in der Konfigurationsphase

$httpProvider.interceptors.push('cloudinaryInterceptor'); 
schieben
0

Diese Frage wurde zuvor gestellt. Die Antwort kann here gefunden werden.

When you start playing around with custom request headers you will get a CORS preflight. This is a request that uses the HTTP OPTIONS verb and includes several headers, one of which being Access-Control-Request-Headers listing the headers the client wants to include in the request.

You need to reply to that CORS preflight with the appropriate CORS headers to make this work. One of which is indeed Access-Control-Allow-Headers. That header needs to contain the same values the Access-Control-Request-Headers header contained (or more).