0

Wie fetch mit IdentityServer4 zu verwenden, um ein JWT-Token zu erhalten, wenn Sie den Ressourceneigner-Kennwortfluss verwenden? (was nicht die meiste Zeit empfohlen wird).Verwenden Sie Fetch mit Identity Server 4

Auch wenn ich den impliziten Fluss verwenden sollte, möchte ich diesen Fluss verwenden, weil es in meiner Situation für meine Spa-Anwendung komfortabler ist. Zunächst werden Sie nützliche Informationen finden Sie hier Ihre Lösung zu implementieren:

Aber wie nutzen [Fetch-api] ein Token erhalten von IdentityServer 4?

Ich sollte ein JWT-Token als Antwort erhalten, aber ich erhalte einen http 500 Fehler. „Internal Server Error“

Wenn ich HTTP-Header mit Fiedler verfolgen, habe ich folgendes Ergebnis:

POST http://127.0.0.1:8888/ HTTP/1.1 
content-type: multipart/form-data 
accept-encoding: gzip,deflate 
user-agent: node-fetch/1.0 (+https://github.com/bitinn/node-fetch) 
connection: close 
accept: */* 
content-length: 896 
Host: 127.0.0.1:8888 
+1

Was sagt das Identitätsserverprotokoll? – cheesemacfly

+0

'DBUG: IdentityServer4.Validation.PostBodySecretParser [0] startet für geheime in der Post Körper krit Parsen: IdentityServer4.Hosting.IdentityServerMiddleware [0] Unbehandelte Ausnahme: System.IO.InvalidDataException: ** Fehlende content-type-Grenze. ** um Microsoft.AspNetCore.Http.Features.FormFeature.GetBoundary (MediaTypeHeaderValue contentType, Int32 lengthLimit) bei Microsoft.AspNetCore.Http.Features.FormFeature. d__18.MoveNext() --- Ende des Stack-Trace von früheren Ort, an dem Ausnahme ausgelöst wurde --- ' – Armand

+0

Wenn ich" Content-Typ "aus meiner Kopfzeile entfernen, dann funktioniert es! Ich werde später eine Antwort geben, aber auch Beachten Sie, dass dieser Code von einem Kopieren/Einfügen kommt, das mit dem Request-js-Modul funktioniert. (Anfrage überschreibt den übergebenen Content-Type) – Armand

Antwort

0

Wie ich in meinem vorherigen Kommentar erwähnt: Wenn Sie mögen Fetch verwenden, um einen autorisierten POST Anfrage mit Formulardaten, Sie dürfen den Content-Type nicht in der Kopfzeile angeben. Seit fetch füllt es automatisch mit dem richtigen Wert ("multipart/form-data") und fügt die dynamisch generierte Inhaltsgrenze hinzu. Beachten Sie auch, dass Sie URLSearchParams verwenden können, wenn Sie die Methode application/x-www-form-urlencoded content-type verwenden möchten.

Verwandte Themen