2017-09-17 1 views
1

Ich habe eine dot net core API läuft auf localhost: 5000. Ich habedot net core api mit CORS immer noch Anfrage ablehnen

hinzugefügt
services.AddCors(); 

zum ConfigureServices Verfahren und

app.UseCors(builder => builder.WithOrigins("http://localhost:3000") 
      .AllowAnyOrigin() 
      .AllowAnyHeader() 
      .AllowAnyMethod()); 

zu konfigurieren Methode in StartUp.

ich eine js-Client haben, die

return fetch('http://localhost:5000/api/Authorization', { 
method: 'POST', 
headers: { 
    'Accept': 'application/json', 
    'Content-Type': 'application/json', 
}, 
body: JSON.stringify({ 
    UserName: userName, 
    Password: password, 
})}).then((response) => response.json()) 
    .then((responseJson) => {return responseJson.userIsAdmin}); 
} 

Aber wenn das letzte ausgeführte versucht wird, weigert sich der Browser und sagte:

Nein 'Access-Control-Allow-Origin' Header ist auf der angeforderten Ressource vorhanden. Origin 'http://localhost:3000' ist daher nicht erlaubt Zugriff. Die Antwort hatte den HTTP-Statuscode 500.

Forschungsergebnisse zu den bereits im oben genannten API-Projekt implementierten Lösungen. Was vermisse ich?

+0

In Ihrem 'StartUp.cs', wo haben Sie die Add/UseCors, vor oder nach dem Add/UseMvc? Es muss vorher sein. –

+0

* "Die Antwort hatte HTTP-Statuscode 500" * ⬅ das ist der einzige wichtige Teil der in der Frage genannten Nachricht. Es ist kein CORS-Fehler. es sieht nur wie eins aus, da der Server den Header "Access-Control-Allow-Origin" nicht zu 500 Fehlerantworten hinzufügt - er fügt ihn wahrscheinlich nur zu 2xx-Erfolgsantworten hinzu. So zeigt 500 an, dass Sie überhaupt kein CORS-Problem haben, sondern stattdessen einen serverseitigen Fehler. Das ist das eigentliche Problem, das Sie benötigen, um die Ursache von & fix zu identifizieren: Der Server sagt, dass es einen schwerwiegenden Fehler gibt - serverseitigen Fehler - und es funktioniert nicht mehr, ist nicht mehr verfügbar – sideshowbarker

Antwort

0

Sie sind auf einen bestimmten Ursprung beschränkt: builder.WithOrigins("http://localhost:3000"), dies bedeutet, die Anfrage Herkunft Ihrer App kann nur http://localhost:3000 sein, und dann jede Herkunft zulassen.

Beginnen Sie mit der geringsten Menge an CORS Beschränkungen und von dort aus arbeiten:

app.UseCors(builder => builder 
      .AllowCredentials() 
      .AllowAnyOrigin() 
      .AllowAnyHeader() 
      .AllowAnyMethod()); 

Siehe this guide für weitere Informationen.

0

Fügen Sie dem Controller auch das Flag hinzu? Fügen Sie das Flag EnableCors zu Ihrem Autorisierungscontroller hinzu.

[EnableCors] 
public class AuthorizationController