Fehler beim senden der richtigen header-Werte, um ein Preflight-Anfrage vom Winkel $http asp.net webapi

Ich versuche zu senden, die Authentifizierung von Daten in einem back-End-web-api mit Winkel $http. Wenn ich die Zeile hinzufügen unter, der browser beginnt mit dem senden der preflight-Anfragen

$http.defaults.headers.common.Authorization = 'Basic xxxxyyyyyy' ;

Aus der web-api-Seite, Wenn ich eine Anfrage mit OPTIONEN Methode, verarbeite ich es wie folgt.

if (request.Method == HttpMethod.Options && request.Headers.Any(k => k.Key.Contains("Origin")))
            {
                var response = new HttpResponseMessage(HttpStatusCode.OK);
                response.Headers.Add("Access-Control-Allow-Headers", "Content-Type,X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5,  Date, X-Api-Version, X-File-Name");
                response.Headers.Add("Access-Control-Allow-Origin", request.Headers.GetValues("Origin"));
                response.Headers.Add("Access-Control-Allow-Credentials", "true");
                response.Headers.Add("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE, OPTIONS");
                var tsc = new TaskCompletionSource<HttpResponseMessage>();
                tsc.SetResult(response);
                return tsc.Task;  
            }

Aber der preflight-Anfrage fehlschlägt access control check.

XMLHttpRequest-Objekt kann nicht geladen werden http://localhost:53024/api.............
Antwort auf preflight-Anfrage nicht passieren access control check:
'Access-Control-Allow-Origin' header mehrere Werte enthält
'http://localhost:9000, *', aber nur eine ist erlaubt. Herkunft
'http://localhost:9000' ist daher nicht der Zugriff erlaubt.

Was mache ich falsch?

InformationsquelleAutor Yohannes Tamru | 2015-10-19

Schreibe einen Kommentar