1

スプリングレスト付きの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 にアップグレードした後、問題に直面し始めました。
助けてください
ありがとう

4

1 に答える 1

0

私はこの問題に2日間苦労していましたが、この質問を投稿した直後に、angular2-rc4 コードで解決策を得ました。他の人を助けることができるように、ここに解決策を投稿しています。
以下に示すようにコードを変更したところ、機能し始めまし た To: let headers = new Headers(); headers.append('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');

しかし、以前のコードが Firefox でどのように機能していたのかはまだわかりません。

于 2016-07-15T08:08:06.877 に答える