2017-07-14 3 views
1

ich mit dem Ionic Rahmen bin Prüfung 3.5.2 und hier ist die Version InfoIonic 3.5.2 Authorization-Header in HTTP-Anforderung fehlt

enter image description here

Ich brauche eine Authentifizierungsanforderung mit einem Autorisierungsheader senden beigefügten Um den Benutzer in das System eingeloggt zu bekommen, enter image description here

Ich bekomme immer 404 Fehler, ich habe bereits die CORS aktiviert. Ich benutze den Postboten, um zu überprüfen, ich sende die gleiche Anfrage mit Briefträger sieht es in Ordnung, ohne irgendein Problem.

Ich überprüfe mit dem Fiddler, fand ich einen Unterschied, das ist der Header Autorisierung fehlt, es wird nicht zusammen mit meiner Anfrage gesendet. Es könnte etwas mit meinem Code nicht stimmen, da der Postbote funktioniert, kein Problem mit der Serverimplementierung.

enter image description here enter image description here

dies ist der Antrag von Postman gesendet, mit Genehmigung Header, so ist es in Ordnung

und hier ist meine Bitte, nicht den Authorization-Header mitgesendet sehen, so Ich habe 404

Können Sie beraten, was ich vermisse?

Edit 1: einen Screenshot für Anexon enter image description here

Edit 2 hinzuzufügen: [15. Juli] Ich sehe, dass Angular meine Anfrage mit Methode OPTION sendet während der Postbote POST verwendet, die funktioniert. Meine Frage ist jetzt, wie kann ich einen POST genau wie der Postbote schicken?

nur für den Fall, um die OPTION zu unterstützen, was sollte ich von der serverseitigen Implementierung tun? Aber dies ist ein "nur für den Fall", der Server sieht jetzt gut mit POST.

hier ist die

des Postman

POST https://abc.xyz.com/SignIn HTTP/1.1 
 
Host: abc.xyz.com 
 
Connection: keep-alive 
 
Content-Length: 63 
 
Accept: application/vnd.softix.api-v2+json 
 
Postman-Token: c2aa12cc-ea95-59d6-79de-4829b96b759b 
 
Cache-Control: no-cache 
 
Origin: chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop 
 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3147.0 Safari/537.36 
 
Authorization: Bearer yTJVNAb4_4h0BRTEA8MoNBuQhpKXuO6BvyIabbSDZMdBW_RTG2_tNME7R_RqeFqMjg2 
 
Content-Type: application/json 
 
Accept-Encoding: gzip, deflate, br 
 
Accept-Language: en-US,en;q=0.8,vi;q=0.6 
 

 
{ "Username" : "user", "Password" : "pass" }

und hier ist mein

OPTIONS https://abc.xyz.com/SignIn HTTP/1.1 
 
Host: abc.xyz.com 
 
Connection: keep-alive 
 
Access-Control-Request-Method: POST 
 
Origin: http://evil.com/ 
 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3147.0 Safari/537.36 
 
Access-Control-Request-Headers: authorization,content-type 
 
Accept: */* 
 
Referer: http://localhost:8100/ 
 
Accept-Encoding: gzip, deflate, br 
 
Accept-Language: en-US,en;q=0.8,vi;q=0.6

Antwort

0

Sie, dassgeprüft habenVariable ist nicht leer?

Zweitens verwende ich folgende headers.append('<header-type>', '<header-content>') anstelle von headers.set('<header-type>', '<header-content'>).Ich denke, dass Sie Header Wert überschreiben, so würde ich es ändern:

let authHeader = 'Bearer $(this.authTokenResponse.access_token)'; 

headers = new Headers(); 
headers.append('Authorization', authHeaders); 
headers.append('Accept', 'application/vdn.softix.api-v2+json'); 
headers.append('Content-Type', 'application/json'); 

// ... 

bearbeiten 1

Auch ich einen weiteren Unterschied bemerkt. Ich benutze Post-Optionen direkt als any Objekttyp, anstelle der Verwendung RequestOptions Konstruktor:

let options = {}; 
options.headers = headers; 

post('<url_request>', signinRequest, options) 
    .map(res => res.json()) 
    .subscribe(data =>{ 
    this.signinResponse = data; 
    console.log(data); 
    }) 
+0

sicher Anexon, ich habe einen Screenshot hinzugefügt, ich habe debugged, beide AuthHeader und Header-Objekt sehen gut aus. Früher habe ich 'append' benutzt, aber es funktioniert auch nicht. – khoailang

+0

Scheint so, als ob alle Header, die Sie durch Post-Optionen weitergegeben haben, fehlen. Es kann mit dem RequestOptions-Konstruktor zusammenhängen. – Anexon

+0

danke Anexon, ich habe aktualisiert, um die RequestionOptions genau wie das, was Sie haben, aber bisher kein Glück zu verwenden. Ich stelle fest, dass Angular meine Anfrage mit der Methode OPTION sendet, während der Postbote POST verwendet, der funktioniert, meiner nicht. Meine Frage ist jetzt, wie kann ich einen POST genau wie der Postbote schicken? Ich habe meine Frage auch mit Kopfzeilen bearbeitet, damit Sie sie leichter überprüfen können. Danke. nur für den Fall, um die OPTION zu unterstützen, was sollte ich von der serverseitigen Implementierung tun? Aber dies ist ein "nur für den Fall", der Server sieht jetzt gut mit POST. – khoailang

0

Ich glaube, ich mein Problem herauszufinden. Ich habe die Chrome-Erweiterung Allow-Control-Allow-Orginin für CORS verwendet, ich dachte, es funktioniert, aber es nicht. Ich wechsle stattdessen Proxy, dann ist es in Ordnung, nichts hat sich mit meinem Code geändert. enter image description here