Ich kratze mich seit zwei Tagen am Kopf. Ich benutze WebAPI Version 2.2 und ich verwende CORS. Diese Einrichtung funktioniert auf der Serverseite, ich darf autorisierten Inhalt von meinem Web-Client-Server-Code bekommen, aber in meinen Ajax-Anrufen nicht autorisiert werden.
Hier ist meine Konfiguration:
Web-API-Konfiguration
WebApiConfig:
%Vor%Startup.Auth.cs:
%Vor%(Ich habe jede Kombination aus app.UseCors (CorsOptions.AllowAll) und config.EnableCors ())
ausprobiertMein Controller-Attribut:
%Vor%Web Client
Ajax-Aufruf:
%Vor%Cookie-Erstellung:
%Vor%Und nicht zuletzt meine Header.
%Vor%Entwickler-Tools und Fiddler behaupten, dass keine Cookies mit der Anfrage gesendet wurden.
Ich glaube, dass Sie hier zwischen Cookies Authentication und Bearer Tokens mischen, Sie senden mit Ihrer Anfrage kein Zugriffs-Token im Authorization Header, weshalb Sie weiterhin 401 erhalten.
Außerdem müssen Sie CORS nur erlauben, application.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
zu verwenden und es sonst wo von Ihrem Controller-Attribut zu entfernen, sogar von der Konfiguration.
Überprüfen Sie meinen Repo hier , wo ich CORS implementiert habe und das Frontend ist auch AngularJS. es funktioniert richtig. Hier ist die Live-Demo für dieses Repo, offene Entwickler-Tools und Überwachung der Anfragen, sollten Sie Pre-Flug-Anfrage sehen, bevor Sie Ihre sehen HTTP get Anfrage.
Wenn Sie nur Ihre API mit Bearer-Tokens schützen müssen, dann empfehle ich Ihnen, Token-basierte Authentifizierung posten
Dies könnte daran liegen, dass sich Ihre API nicht auf der URL "came" als aufrufende Anwendung befindet. Ihre URL für die API lautet:
http://127.0.0.1/
(ignoriert den Ordnerpfad - spielt keine Rolle)
.. aber Sie rufen es von http://127.0.0.1:8888
an, das als separate Site zählt, da der Port anders ist. Da der Browser denkt, dass die Site anders ist, wird das Cookie nicht gesendet.
Haben Sie versucht, es auf einer Seite zu testen, die auf der gleichen URL gehostet wird wie die API (mit demselben Port)?
Am wichtigsten: Überprüfen Sie, ob das Cookie in Fiddler gesendet werden kann.
Sie finden möglicherweise auch weitere relevante Informationen dazu, wie dies funktioniert zu dieser Antwort
Tags und Links asp.net-web-api asp.net ajax cors bearer-token