2016-05-18 8 views
0

HALLO Ich habe eine Angular-Anwendung, die von einer REST-API in NodeJS konsumieren beide auf IIS-Server von Knoten bereitstellen Ich verwende IISNode.Kein 'Access-Control-Allow-Origin'-Header ist auf der angeforderten Ressource vorhanden (AngularJS + NodeJs) In IISNOde

Ich erhalte den Fehler XMLHttpRequest cannot load http://181.49.53.186:8006/DynamicContent/form/list. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://web.procesosyservicios.info:3006' is therefore not allowed access. nur in der Produktionsversion in der Entwicklerversion erhalten nie den Fehler. Das Seltsame ist, dass man den Fehler nicht immer zB bei der vorherigen Methode bekomme ich bekomme den Fehler nur 2 mal 3 mal für jeweils 10 Aufrufe.

Meine app.js Datei haben die folgende Konfiguration:

router.use(function(req, res, next) { 
    res.header('Access-Control-Allow-Origin', '*'); 
    res.header('Access-Control-Allow-Methods', 'GET, POST'); 
    res.header('Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Authorization'); 
    next(); 
}); 

Alternative ich die vorherigen Zeilen löschen und das gleiche in meine web.coonfig Datei wie folgt definieren:

<httpProtocol> 
    <customHeaders> 
     <add name="Access-Control-Allow-Origin" value="*" /> 
     <add name="Access-Control-Allow-Methods" value="GET,POST" /> 
     <add name="Access-Control-Allow-Headers" value="X-Requested-With,content-type,Authorization" /> 
    </customHeaders> 
</httpProtocol> 

aber das Ergebnis ist das selbe nur manchmal arbeiten. Ich habe keine Ahnung, was der Fehler sein kann.

Dank für die Hilfe

SOLUTION

In meinem Fall war die Lösung meiner Datei web.config dieses configuration folgenden ändern und das Hinzufügen dieser Zeilen:

<httpProtocol> 
    <customHeaders> 
     <add name="Access-Control-Allow-Origin" value="*" /> 
     <add name="Access-Control-Allow-Methods" value="GET,POST" /> 
     <add name="Access-Control-Allow-Headers" value="X-Requested-With,content-type,Authorization" /> 
    </customHeaders> 
</httpProtocol> 

Antwort

-1

Probleme mit Cross Domain Ajax-Anfragen sind für Entwickler ziemlich üblich.

Die beste Möglichkeit zur Lösung dieses Problems besteht darin, dem Antwortobjekt einen Header vom Server hinzuzufügen.

Hier ist ein Blog, der dies in sehr vielen Details erklärt. Es enthält auch einige serverseitige Codes. In C# besteht die Art, Kopfzeile hinzuzufügen, aus der folgenden Anweisung.

Response.AddHeader("Access-Control-Allow-Origin", "mydomain.com"); 
Response.ContentType = "application/json"; 

Sie können auch eine * statt der mydomain.com aber es Niederlagen der ganze Zweck der Sicherheitsmaßnahme, die die Sperrung solcher Anforderungen der Fall ist.

Hoffe, dass hilft.

Dank

Paras

+0

Hallo @pparas vielen Dank für Ihre Antwort; Entschuldigung, aber ich kann den Link zum Blog sehen. Bezüglich der Lösung versuche ich mit zwei verschiedenen Methoden die Header hinzuzufügen. In meinem Server in meiner app.js Datei und in web.config Datei (der Code, der verwenden kann die Frage einchecken); aber beide bekommen den gleichen Fehler. – oriaj