2016-07-15 10 views
1

Ich benutze angular2-rc4 mit Federauflage. Ich verwende eine Spring-Authentifizierung.
Die Spring-Authentifizierung erwartet den content-type als application/x-www-form-urlencoded; charset = UTF-8 und posten Daten im einfachen String-Format wie "j_username = user & j_password = pass".
Also schrieb ich den folgenden Code:angular2-rc4- text/plain wird automatisch in Inhaltstyp angehängt, wenn x-www-form-urlencoded gegeben

let data = 'j_username=user&j_password=password'; //Spring authentication expects data in this format. 
let headers = new Headers({'Content-type': 'application/x-www-form-urlencoded; charset=UTF-8'}); 
let options = new RequestOptions({headers: headers}); 
this.http.post(url, data, options).subscribe(
..... 
.... 
); 

Wenn ich diesen Code durch Firefox ausführen, es ohne Problem durchmachen. Die Daten erreichen den Server und die Authentifizierung funktioniert einwandfrei.
Aber wenn ich aus Chrom mache, funktioniert es nicht. Benutzername und Passwort erreichen den Server mit leeren Werten.
Ich habe die Anfrage Header von Chrome und Firefox mit Hilfe von Firebug verglichen. Ich habe einen Unterschied bemerkt. content-type läuft in Firefox, aber nicht in Chrome. Unten ist der Inhaltstyp von Chrome und Firefox:
Firefox: Content-Typ: Anwendung/x-www-form-urlencoded; charset = UTF-8
Chrome: Inhaltstyp: test/plain, application/x-www-form-urlencoded; charset = UTF-8

Wenn Sie sehen, dass chrome Text/plain automatisch an die Kopfzeile anfügt. Ich verstehe nicht den Grund dafür.
Hinweis: Dieser Code arbeitete mit angular2-rc1. Nach dem Upgrade auf rc4 wurde das Problem behoben.
Bitte helfen
Dank

+0

Es gibt ein Problem auf Angular2 Github diesbezüglich. Problem # 9452, so sieht es aus wie in RC5 + sie haben das behoben. – Helzgate

Antwort

0

ich seit 2 Tagen für dieses Problem zu kämpfen und kurz nach dieser Frage veröffentlichen, habe ich Lösung in angular2-RC4-Code. Ich schreibe hier eine Lösung, damit sie anderen helfen kann.
Ich habe meinen Code wie unten gezeigt geändert und er hat angefangen zu arbeiten: Von: let headers = new Headers ({'Inhaltstyp': 'application/x-www-form-urlencoded; charset = UTF-8'}); An: lassen Header = neue Header(); headers.append ('Inhaltstyp', 'application/x-www-form-urlencoded; Zeichensatz = UTF-8');

Aber ich bin immer noch nicht sicher, wie der vorherige Code in Firefox funktionierte.

Verwandte Themen