Настройка HttpClient¶
30.09.2026
Начиная с Angular v21 сервис HttpClient доступен для инъекции по умолчанию.
Провайдер HttpClient через инъекцию зависимостей¶
Функция provideHttpClient задаёт набор возможностей HTTP по умолчанию или добавляет возможности в providers приложения в app.config.ts.
1 2 3 | |
Если приложение стартует через NgModule, provideHttpClient добавляют в providers корневого NgModule — так же настраивается набор возможностей по умолчанию или дополнительные возможности:
1 2 3 4 5 | |
Дальше HttpClient внедряется в компоненты, сервисы и другие классы:
1 2 3 4 5 | |
Настройка возможностей HttpClient¶
provideHttpClient принимает список необязательных настроек: ими включают или меняют отдельные стороны клиента. Ниже — эти возможности и как ими пользоваться.
withXhr¶
1 2 3 | |
По умолчанию HttpClient ходит в сеть через API fetch. withXhr переключает клиент на XMLHttpRequest.
fetch — более современный API, и он есть в средах, где XMLHttpRequest не поддерживается. У него есть ограничения: например, он не отдаёт события прогресса выгрузки.
Не используйте withXhr при серверном рендеринге (SSR)
Поддержка XHR на сервере устарела и её уберут в Angular 23. Библиотека xhr2 небезопасно обрабатывает перенаправления: она может переслать заголовки Authorization при кросс-доменном редиректе и уязвима к отказу в обслуживании (DoS) через циклы перенаправлений. В SSR-приложениях оставляйте серверную часть fetch по умолчанию.
withInterceptors(...)¶
withInterceptors задаёт набор функций-перехватчиков, через которые проходят запросы HttpClient. Подробнее — в руководстве по перехватчикам.
withInterceptorsFromDi()¶
withInterceptorsFromDi подключает прежний вид перехватчиков — классы из инъекции зависимостей. Подробнее — в руководстве по перехватчикам.
У функциональных перехватчиков (через withInterceptors) порядок предсказуемее. Берите их вместо перехватчиков на DI.
withRequestsMadeViaParent()¶
По умолчанию provideHttpClient в данном инжекторе перекрывает настройку HttpClient родительского инжектора.
С withRequestsMadeViaParent() запрос после локальных перехватчиков уходит в экземпляр HttpClient родительского инжектора. Так в дочернем инжекторе добавляют свои перехватчики и при этом сохраняют перехватчики родителя.
Выше текущего инжектора уже должен быть настроен экземпляр HttpClient. Иначе параметр недопустим, и при обращении к нему будет ошибка во время выполнения.
withJsonpSupport()¶
withJsonpSupport включает метод .jsonp() у HttpClient: GET-запрос по соглашению JSONP для загрузки данных с другого домена.
Для кросс-доменных запросов по возможности берите CORS, а не JSONP.
withXsrfConfiguration(...)¶
Этот параметр настраивает встроенную защиту HttpClient от XSRF. Подробнее — в руководстве по безопасности.
withNoXsrfProtection()¶
Этот параметр отключает встроенную защиту HttpClient от XSRF. Подробнее — в руководстве по безопасности.
Настройка через HttpClientModule¶
Часть приложений настраивает HttpClient старым API на NgModule.
В таблице — NgModule из @angular/common/http и соответствующие им функции провайдеров.
| NgModule | Эквивалент provideHttpClient() |
|---|---|
HttpClientModule | provideHttpClient(withInterceptorsFromDi(), withXhr()) |
HttpClientJsonpModule | withJsonpSupport() |
HttpClientXsrfModule.withOptions(...) | withXsrfConfiguration(...) |
HttpClientXsrfModule.disable() | withNoXsrfProtection() |
Осторожно с HttpClientModule в нескольких инжекторах
Если HttpClientModule есть в нескольких инжекторах, поведение перехватчиков определено плохо и зависит от точных параметров и порядка провайдеров и импортов.
Для конфигурации с несколькими инжекторами берите provideHttpClient: поведение стабильнее. Смотрите возможность withRequestsMadeViaParent выше.
Источник: https://angular.dev/guide/http/setup