2017-09-29 10 views
0

J'appelle l'API nodeJS REST s'exécutant sur différents localhost dans une application angulaire, dans le postman j'obtiens le résultat attendu. mais dans une application angulaire, il est en train de tomber en raison d'une erreur 403, Cela se produit en raison du contrôle en amont (la réponse pour le contrôle en amont a un code d'état HTTP 403 invalide). J'ai essayé de supprimer certains en-têtes par défaut en utilisant $ httpprovider et j'ai également essayé d'utiliser le nom du serveur approprié au lieu de joker (*) dans access-control-allow-region rien n'a fonctionné. Rechercher de l'aide! Il n'y a pas d'authentification pour les demandes de contrôle en amont. Affichage mon req-respo pression Req-Responce snap403 API de repos interdite (node ​​js) dans Angular js1

+0

double possible de [XMLHttpRequest ne peut pas charger .... Réponse pour le contrôle en amont a le code d'état HTTP 401 non valide] (https://stackoverflow.com/questions/38326128/xmlhttprequest-cannot-load-response-for-preflight-has-invalid-http-status-c – sp00m

+2

Si vous essayez de le résoudre en utilisant Angular, rien ne va pour vous aider. Il faut réparer le côté serveur. C'est le problème 'CORS''. – Ved

+0

merci @ Ved, Vijayanath Viswanathan, sp00m –

Répondre

0

En manipulant OPTIONS demande à côté serveur je suis en mesure de résoudre le problème, This post solved my problem

En ajoutant la ligne de code suivante

app.use(function (req,res,next){ 
    if (req.method === 'OPTIONS') { 
      console.log('!OPTIONS'); 
      var headers = {}; 
      // IE8 does not allow domains to be specified, just the * 
      // headers["Access-Control-Allow-Origin"] = req.headers.origin; 
      headers["Access-Control-Allow-Origin"] = "*"; 
      headers["Access-Control-Allow-Methods"] = "POST, GET, PUT, DELETE, OPTIONS"; 
      headers["Access-Control-Allow-Credentials"] = false; 
      headers["Access-Control-Max-Age"] = '86400'; // 24 hours 
      headers["Access-Control-Allow-Headers"] = "X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept"; 
      res.writeHead(200, headers); 
      res.end(); 
    } else { 
    //... 
    other requests 
    } 
});