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
Es gibt ein Problem auf Angular2 Github diesbezüglich. Problem # 9452, so sieht es aus wie in RC5 + sie haben das behoben. – Helzgate