2016-12-11 3 views
0

Ich habe eine einfache ASP.NET Web API-Anwendung mit individuellen Konten für die Authentifizierung.jQuery + ASP.NET Web API + CORS Fehler

I aktiviert CORS drin: installiertes Paket und das hinzugefügt:

var cors = new EnableCorsAttribute(
     origins: "*", 
     headers: "*", 
     methods: "*"); 
     config.EnableCors(cors); 

in die Datei WebApiConfig.

Jetzt möchte ich Anfragen von einer einfachen Webseite mit jQuery machen. Ich habe diesen Code jetzt:

var loginData = { 
    grant_type: "password", 
    username: "foo", 
    password: "Something_1562" 
}; 

$.ajax({ 
    type: 'POST', 
    url: "https://localhost:44351/Token", 
    data: loginData 
}).done(function (data) { 
    alert(data.userName); 
    alert(data.access_token); 

}).fail(function (data) { 
    alert('Request Status: ' + req.status + ' Status Text: ' + req.statusText + ' ' + req.responseText); 
}); 

Und ich bekomme diese:

XMLHttpRequest cannot load https://localhost:44351/Token. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. 

EDIT:

Einige zusätzliche Informationen: - Ich habe https/ssl im Web api ermöglichen - Das API läuft auf ISS Express

Antwort

1

Ich hoffe, diese folgenden paar Punkte & Links sind nützlich:

Access-Control-Allow-Origin: * 

Der Wert "*" besondere ist, dass er Anforderungen Anmeldeinformationen zu liefern nicht erlaubt, HTTP-Authentifizierung bedeutet, clientseitige SSL-Zertifikate, noch Cookies erlaubt gesendet werden. Quelle: Wikipedia

Daher muss Ihre Web-API angeben, welche URL mit AJAX darauf zugreift. Beispielsweise.

[EnableCors(origins: "http://yourAjaxClientURL", headers: "*", 
    methods: "*", SupportsCredentials = true)] 

Cross-Origin-Anmeldeinformationen im Web-API zu ermöglichen, stellen Sie die SupportsCredentials Eigenschaft auf true auf dem [EnableCors] Attribut. Quelle: Enabling Cross-Origin Requests in ASP.NET Web API 2

Dritte nützlicher Link www.w3.org - cors

+0

, die den Trick tat! Vielen Dank. –

+0

Btw, ich habe jetzt ein anderes Problem: meine GET-Anfragen werden in OPTIONS geändert, was zu einem 405-Code führt. Ich habe einige Posts gelesen, aber nichts funktioniert ... Irgendwelche Tipps? –

+0

@ CátiaAzevedo Vielleicht auch diese Links sind auch hilfreich: http://enable-cors.org/server_iis7.html und http://StackOverflow.com/Questions/28488535/CORS-settings-for-IIS7-5 – jyrkim