Не удается получить заголовки ответа внутри службы перехватчика angular 6, хотя она доступна на вкладке сети консоли Chrome. Я нашел много решений для того же и добавил все, но ничего не произошло.Я добавляю Access-Control-Expose-Headers
в мой сервер node.js.
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type, Authorization,Auth');
res.setHeader('Access-Control-Expose-Headers', 'Autho')
Также я использую модуль HTTPClient
для остальных API.
Файл Interceptor.ts:
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const token = sessionStorage.getItem('data');
const id = sessionStorage.getItem('id');
const re = '/login';
// if( !token)
console.log(request.url);
// console.log(new URL(request.url).searchParams.get('userId'));
if (request.url.search(re) === -1) {
request = request.clone({
setHeaders: {
Authorization: token,
Auth: id
}
});
}
return next.handle(request).do((event: HttpEvent<any>) => {
console.log(event);
if (event instanceof HttpResponse) {
// do stuff with response if you want
console.log(event.headers);
// console.log(response.headers);
// console.log(HttpResponse.Headers);
}
}, (err: any) => {
if (err instanceof HttpErrorResponse) {
console.log(err);
if (err.status === 400) {
// redirect to the login route
// or show a modal
console.log('ERROR');
window.location.href = this.messageService.API_ROOT;
}
}
});
}
console.log (event.headers);ничего не печатает.
rest-api.ts:
import {Injectable} from '@angular/core';
import {HttpClient, HttpHeaders} from '@angular/common/http';
const httpOptions = {
headers: new HttpHeaders({'Content-Type': 'application/json'})
};
@Injectable({
providedIn: 'root'
})
export class RestApiService {
apiRoot = 'http://localhost:9005';
constructor(private http: HttpClient) {
}
addModule(data) {
return this.http.post(this.apiRoot + '/addModule', data, httpOptions);
}
getModules() {
return this.http.get(this.apiRoot + '/getModules');
}
}
Сервер:
res.setHeader('Autho','xxxxxxxxxxxxx');
Добавление заголовка следующим образом.Как получить поле заголовка 'Autho' внутри перехватчика