スプリングレスト付きのangular2-rc4を使用しています。春の認証を使用しています。
Spring 認証は、コンテンツ タイプが application/x-www-form-urlencoded であることを想定しています。charset=UTF-8 で、"j_username=user&j_password=pass" のようなプレーンな文字列形式でデータを投稿します。
そこで、次のコードを書きました。
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(
.....
....
);
このコードをFirefoxで実行すると、問題なく実行されます。データはサーバーに到達しており、認証は正常に機能しています。
しかし、クロムから行うと、機能しません。ユーザー名とパスワードが空の値でサーバーに到達しています。
firebug を使用して、chrome と firefox の両方のリクエスト ヘッダーを比較しました。1つの違いに気付きました。content-type は、Firefox では正常に機能していますが、Chrome では正常に機能していません。以下は、chrome と firefox の両方のコンテンツ タイプです。
Firefox : Content-type: application/x-www-form-urlencoded; charset=UTF-8
Chrome : コンテンツ タイプ: テスト/プレーン、アプリケーション/x-www-form-urlencoded; 文字セット=UTF-8
クロムがヘッダーに text/plain を自動的に追加している場合。この背後にある理由がわかりません。
注: このコードは angular2-rc1 で動作していました。rc4 にアップグレードした後、問題に直面し始めました。
助けてください
ありがとう