私はAngular 4
に基本認証を実装しようとしています。これは、新たに公開されたHttpClient
を使用しています。解決済み:角4.3 HTTPClient基本認証が機能しない
Tomcat
で実行中のSpring
アプリケーションに接続しようとしましたが、これは公開されたREST
APIです。
私は私のLoginComponent
次のコードを持っている:
onSubmit(user){
console.log(user);
const body = JSON.stringify({username: user.userName, password: user.password});
let headers = new HttpHeaders();
headers.append("Authorization", "Basic " + btoa("username:password"));
headers.append("Content-Type", "application/x-www-form-urlencoded");
this.http.post('my url here',body, {headers: headers}).subscribe(response => {
console.log(response);
}, err => {
console.log("User authentication failed!");
});
}
しかし、要求は全くAuthorization
ヘッダーを追加しません。
私が間違って何をやっている:
これはChrome
ツールNetwork
タブからでしょうか? どうすればこの作品を作れますか?
更新1:そのそれでも動作しない:予想通り、私はリクエストのヘッダを取得しています
headers = headers.append("Authorization", "Basic " + btoa("username:password"));
headers = headers.append("Content-Type", "application/x-www-form-urlencoded");
:
以下のように私は私の2行を変更しました。これはChrome
からです:
しかし、ポスト・コールがまだ失敗しています。サーバー側で
、私のコードは次のとおりです。
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
String authCredentials = request.getHeader("Authorization");
if(authCredentials == null) {
logger.info("Request with no basic auth credentials {}", request.getRequestURL());
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
return;
}
// do my stuff
}
コールdo my stuff
に達することはありません。 authCredentials
はnull
です。
これはchrome
からです:
続行する方法は? HttpHeaders
があるので、私はアップデート1で何をしたかにheaders
行を変更しなければならなかった
1):
アップデート2:その作業は:
は、私は両方の手順を実行しなければなりませんでした不変。サーバー側を変更することなく、CORSの問題を解決するためにhereを説明するように
a)はプロキシを使用します。
headers = headers.append("Authorization", "Basic " + btoa("username:password"));
headers = headers.append("Content-Type", "application/x-www-form-urlencoded");
2)今、あなたの条件に基づいて、2つのオプションがあります。
b)サーバーの末尾をhereのように更新し、以下のいくつかの回答で、スプリングの構成を変更してください。
'http' - ' @ /角度共通/ http'または '角度@/http' –
@AjitSoman:@角度/共通/ HTTP ... – Nik
のためにベンの答えの仕事をしました君は ? corsに関してコンソールで何かエラーがありましたか? –