Ich baue eine Angular-App, die ng-Ressource verwendet. Die Service API ist in Asp.Net Core Web API erstellt und das CORS ist bereits aktiviert.Cors Problem tritt nur auf, wenn "Put"?
The service.js Code
.factory('D2Service', ['$resource', function ($resource) {
return $resource('http://localHost:5001/api/D2/:id',
{ id: '@id' },
{
update: { method: 'PUT' }
});
}])
jedoch der Anruf D2Service.update(model.d);
in Controller bekam die folgende Fehlermeldung.
XMLHttpRequest kann http://localhost:5001/api/D2 nicht laden. Die Antwort auf die Preflight-Anforderung übergibt die Zugriffskontrollprüfung nicht: Auf der angeforderten Ressource ist kein Header "Access-Control-Allow-Origin" vorhanden. Ursprung 'http://localhost:8082' ist daher nicht erlaubt.
Aber D2Service.get({ id: model.id })....
läuft ohne Fehler. Warum hat das "PUT" das CORS-Problem, während das "GET" in Ordnung ist?
Folgendes ist die Anfrage/Antwort beim Überwachen mit Fiddler.
Anfrage:
OPTIONS http://localhost:5001/api/D2 HTTP/1.1
Host: localhost:5001
Connection: keep-alive
Access-Control-Request-Method: PUT
Origin: http://localhost:8082
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36
Access-Control-Request-Headers: content-type
Accept: */*
Referer: http://localhost:8082/
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: en-US,en;q=0.8
Antwort:
HTTP/1.1 204 No Content
Date: Sun, 27 Nov 2016 23:32:31 GMT
Server: Kestrel
richtig CORS zu unterstützen, Ihren Server Bedürfnisse auf Preflight-Anfragen antworten (OPTIONS) - so funktioniert CORS –
Wie lässt sich der Server auf Preflight-Anfragen reagieren? Ich benutze Asp.net Core auf Dotnet Core. – ca9163d9
das ist, wofür Google ist - zu suchen, wie man diese Dinge tut - https://docs.microsoft.com/en-us/aspnet/core/security/cors –