2017-06-30 7 views
1

Ich habe Rest-Anwendung mit Angular2 und ASP MVC Rest Server und ich habe ein Problem mit der Kommunikation. Wenn ich sende, bekomme ich diesen Fehler:ASP MVC Web API mit Angular2 - Http Header Access-Control

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' http://localhost:4200 ' is therefore not allowed access.

Wenn ich Access-Control-Allow-Origin hinzugefügt zu verlangen, ich diesen Fehler:

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' http://localhost:4200 ' is therefore not allowed access. The response had HTTP status code 404.

Hier ist mein Code:

let headers = new Headers({ 'Access-Control-Allow-Origin': '*' }) 
    this.http.get("http://localhost/App/Users", { withCredentials: true, headers: headers }) 
     .subscribe(response => { 
     console.log("A"); 
     }, error => { 
     console.log(error); 
     }); 

In web.config ist die Windows-Authentifizierung aktiviert. Wo ist das Problem?

+0

Wie können Sie in web api cors aktivieren? – hasan

Antwort

2

Das Problem scheint hier ist von CORS. Ihre eckige und WebAPI verwenden verschiedene Ports, da Sie localhost verwenden. (Scheint, als wären sie zwei verschiedene Projekte). Um dies zu lösen, können Sie das nugget-Paket mit "Install-Package Microsoft.AspNet.WebApi.Cors" installieren und dann in Ihrer WebApiConfig-Datei einfach "config.EnableCors()" sagen. Jetzt muss die API, der Sie den eckigen Teil aussetzen, gesagt werden, dass die CORS dort verwendet werden soll. Sie können also das Attribut über Ihren Controller setzen, indem Sie den Ursprung, die Header und die Methoden angeben. Danach sollte es gut funktionieren. Für weitere Referenz können Sie diesen Link, https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api