#angular #http-headers #angular-http-interceptors
Вопрос:
Если у меня есть перехватчик, который добавляет заголовки для каждого запроса, но в каждом запросе я должен добавлять дополнительные заголовки, относящиеся к каждому запросу, как я могу добавить эти заголовки?
(Я опускаю импорт HttpClient и других)
// any.interceptor.service.ts
intercept(req: HttpRequest<any>, next: HttpHandler) {
const authToken = this.auth.getAuthorizationToken();
const authReq = req.clone({
headers: req.headers.set('Authorization', authToken)
});
return next.handle(authReq);
}
// my.service.ts
@Injectable({
provideIn: 'root'
})
export class MyService {
send(data: AnyInterface) {
// *******************
// adding HERE additional specific headers
// *******************
this.http.post(URL, data);
}
}
Ответ №1:
Тогда вы могли бы попробовать это :
send(data: AnyInterface) {
const headers = new HttpHeaders();
headers.set('YOUR_HEADER_KEY', 'YOUR_HEADER_VALUE');
this.http.post(URL, data, { headers });
}
Комментарии:
1. является
post(URL,data,{headers:headers})
2. @Eliseo, в машинописном тексте (я думаю, что ECMA6 также), если у вас есть объект, у которого есть атрибут, значение которого имеет другой объект с тем же именем атрибута, вы можете оставить только имя атрибута. const MyObject={…}; antotherObjetc{attr1:1,attr2:’пример’, MyObject: MyObject } совпадает с antotherObjetc{attr1:1,attr2:’пример’, MyObject }
3. Привет @Emilien, я поместил ваше решение в 2 разных проекта, и оно не работает :(. Можно видеть только заголовки перехватчиков.
Ответ №2:
Я, наконец, смог решить эту проблему. Читая эту статью, я смог понять, что HttpHeaders неизменяемы, поэтому для решения @Emilien нужно было бы изменить только следующее:
send(data: AnyInterface) {
const headers = new HttpHeaders().set('YOUR_HEADER_KEY', 'YOUR_HEADER_VALUE');
this.http.post(URL, data, { headers });
}
Спасибо!