WebAPI 2 mit OWIN-Middleware und Token-basierter Authentifizierung: Die OPTIONS-Anforderung gibt den Fehler "unsupported_grant_type" zurück

7

WEBAPI bietet Endpunkt für die Authentifizierungsanfrage: http: \ ... \ token

Die Authentifizierungsanfrage sollte mit der Methode "POST" und Body wie

gesendet werden %Vor%

Diese WebAPI wird von Front-End verwendet, die mit AngularJS geschrieben wurde. Manchmal wird vor dem Senden einer "POST" -Anfrage mit einem gültigen Body eine "OPTIONS" -Anfrage ohne Body gesendet. Als Ergebnis wird der folgende Fehler von WebAPI zurückgegeben:

%Vor%

Gibt es eine Lösung, die serverseitig implementiert werden kann? (in WebAPI)

HTTP-Anforderungsmethode: OPTIONEN

%Vor%     
user3653175 11.09.2014, 18:16
quelle

4 Antworten

17

Ich bin gerade in das gleiche Problem gerannt..Ich benutze ember und ember-simple-auth. Alle Preflight-Anfragen OPTIONS an den / token-Endpunkt führten zu einer 400-HTTP-Antwort und der Body hatte die bekannte Form: {error: "unsupted_grant_type"}.

LÖSUNG:

Ich erben von: OAuthAuthorizationServerProvider und überschreiben die MatchEndpoint-Funktion:

%Vor%

Das scheint sich darum zu kümmern. Hoffe es hilft.

    
Wojciech Wieroński 22.11.2014 22:14
quelle
5

Ich habe den gleichen Fehler bekommen, als ich vergessen habe, Content-Type: application/x-www-form-urlencoded zum Anfrage-Header hinzuzufügen.

    
Peter Hedberg 22.09.2014 14:14
quelle
2

In diesem Fall ist OPTIONS eine CORS-Preflight-Anfrage. Es wird gesendet, um festzustellen, ob die tatsächliche Anfrage ( POST ) sicher gesendet werden kann. Cross-Site-Anfragen werden Preflight, wenn andere Methoden als GET , HEAD oder POST oder benutzerdefinierte Header verwendet.

Um eine 400 HTTP-Antwort zu vermeiden, sollten Sie in Ihrer Startup-Klasse CORS für die OWIN-Middleware mit der Erweiterungsmethode UseCors aktivieren und Ihre benutzerdefinierte System.Web.Cors.CorsPolicy definieren.

%Vor%     
Alberto Spelta 27.12.2014 14:07
quelle
1

Ich habe versucht, meine API mit Fiddler zu testen, und habe die Daten nicht im richtigen Format im Abschnitt "Request Body" bereitgestellt. Stellen Sie sicher, dass es als Schlüsselwertliste hinzugefügt wurde, getrennt durch '& amp;'.

%Vor%     
puddinman13 24.01.2016 02:22
quelle

Tags und Links