「X-Auth-Key」のキーを持つ応答ヘッダーを持つget要求を持つAngular2/4アプリケーションがあります。 response.headerを呼び出すと、デフォルトのヘッダーが取得され、response.headers.get( 'X-Auth-Token')が呼び出され、nullが返されます。以下は私のコードとChromeコンソールからのリクエストのスクリーンショットです(var urlは別の場所で定義されています)。角2/4返答getカスタムヘッダー
getToken(id: string, password: string): Observable<User> {
let headers = new Headers({ 'X-Auth-User': id, 'X-Auth-Key': password });
return this.http
.get(url + 'auth', { headers: headers })
.map(response => {
let user: User = response.json() as User;
// store user details and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('currentUser', JSON.stringify({ user: user, token: response.headers.get('X-Auth-Token') }));
return user;
})
}// Get authorization token
おかげで私は私が間違っているのかわからないんだけど、私は任意の助けに感謝!
私は必要なヘッダーを受け取っていますが、アクセスできません。 –
正解ですが、より正確には、ブラウザが必要なヘッダーを受け取っていても(ブラウザのdevtoolsで見ることもできます)、ブラウザが自動的にフロントエンドのJavaScriptコードでその値にアクセスできるわけではありません。ブラウザーは、サーバーの応答にisを許可するAccess-Control-Expose-Headersが含まれていない限り、フロントエンドコードがそのヘッダー値にアクセスするのをブロックします。これは、Fetch仕様書に記載されているCORSプロトコルの要件です。 – sideshowbarker
ありがとう!それは物事をはっきりとクリアする。私はCORSだけでヘッダーが届かないと思っていました。なぜそれを見たのか、私はなぜそれを使用できないのか混乱しました。 –