Angolare-JWT exception di intestazione Autorizzazione

Ho cercato di integrare il Cloudline tramite l'invio angular nella mia applicazione AngularJS. Tuttavia, ho riscontrato questo errore durante il tentativo di caricare dalla mia applicazione:

Authorization is not allowed by Access-Control-Allow-Headers

In un primo momento ho pensato che questo era un problema grunt dato che stavo usando http-server per eseguire l'applicazione di esempio Cloudinar, che è stato caricato con successo, ma ora ho capito che questo è più probabile il risultato di utilizzare l'implementazione angular-jwt di Auth0. Questo attacca l'intestazione di authorization a tutte le richieste, che il cloudino non accetta. Ho trovato qualcuno con un problema molto simile qui

https://github.com/DaftMonk/generator-angular-fullstack/issues/931

tuttavia, ho difficoltà a capire come adattare tale soluzione a angular-jwt. Chiamo

$httpProvider.interceptors.push('jwtInterceptor');

nel mio app.config, ma voglio escludere le richieste da https://api.cloudinary.com/v1_1/

Questa è la distribuzione angular-jwt:

 (function() { // Create all modules and define dependencies to make sure they exist // and are loaded in the correct order to satisfy dependency injection // before all nested files are concatenated by Grunt // Modules angular.module('angular-jwt', [ 'angular-jwt.interceptor', 'angular-jwt.jwt' ]); angular.module('angular-jwt.interceptor', []) .provider('jwtInterceptor', function() { this.urlParam = null; this.authHeader = 'Authorization'; this.authPrefix = 'Bearer '; this.tokenGetter = function() { return null; } var config = this; this.$get = ["$q", "$injector", "$rootScope", function ($q, $injector, $rootScope) { return { request: function (request) { if (request.skipAuthorization) { return request; } if (config.urlParam) { request.params = request.params || {}; // Already has the token in the url itself if (request.params[config.urlParam]) { return request; } } else { request.headers = request.headers || {}; // Already has an Authorization header if (request.headers[config.authHeader]) { return request; } } var tokenPromise = $q.when($injector.invoke(config.tokenGetter, this, { config: request })); return tokenPromise.then(function(token) { if (token) { if (config.urlParam) { request.params[config.urlParam] = token; } else { request.headers[config.authHeader] = config.authPrefix + token; } } return request; }); }, responseError: function (response) { // handle the case where the user is not authenticated if (response.status === 401) { $rootScope.$broadcast('unauthenticated', response); } return $q.reject(response); } }; }]; }); angular.module('angular-jwt.jwt', []) .service('jwtHelper', function() { this.urlBase64Decode = function(str) { var output = str.replace(/-/g, '+').replace(/_/g, '/'); switch (output.length % 4) { case 0: { break; } case 2: { output += '=='; break; } case 3: { output += '='; break; } default: { throw 'Illegal base64url string!'; } } return decodeURIComponent(escape(window.atob(output))); //polifyll https://github.com/davidchambers/Base64.js } this.decodeToken = function(token) { var parts = token.split('.'); if (parts.length !== 3) { throw new Error('JWT must have 3 parts'); } var decoded = this.urlBase64Decode(parts[1]); if (!decoded) { throw new Error('Cannot decode the token'); } return JSON.parse(decoded); } this.getTokenExpirationDate = function(token) { var decoded; decoded = this.decodeToken(token); if(typeof decoded.exp === "undefined") { return null; } var d = new Date(0); // The 0 here is the key, which sets the date to the epoch d.setUTCSeconds(decoded.exp); return d; }; this.isTokenExpired = function(token, offsetSeconds) { var d = this.getTokenExpirationDate(token); offsetSeconds = offsetSeconds || 0; if (d === null) { return false; } // Token expired? return !(d.valueOf() > (new Date().valueOf() + (offsetSeconds * 1000))); }; }); }()); 

Aiuto?

jwtInterceptor controlla la richiesta di una flag di skipAuthorization e non invia l'intestazione Authorization se è impostata su true .

Crea la tua chiamata $ http come

 $http({ url: 'https://api.cloudinary.com/v1_1/', skipAuthorization: true, method: 'POST', // ... etc }).then(successCallback, errorCallback); 

– Più su Docs angular-jwt