Middle Механизмы ядра Рекомендуется

HttpClient: исходящие запросы

Встроенный Bitrix\Main\Web\HttpClient поддерживает как классический синхронный режим (get(), post()), так и современный стандарт PSR-18 с параллельной отправкой запросов. При интеграциях с внешними API необходимо явно задавать таймауты подключения и отключать доступ к приватным IP-адресам (setPrivateIp(false)) для защиты от SSRF-атак.

Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.

Что нужно понимать

  • 1
    Bitrix\Main\Web\HttpClient
  • 2
    Таймауты, заголовки, авторизация
  • 3
    Параллельные запросы
  • 4
    Логирование запросов

Материалы

Проверь себя

Страница оформления заказа зависла на минуту у всех пользователей одновременно. При чём тут HttpClient?

Служба доставки не отвечала, а клиент с умолчаниями ждал 30 секунд соединения (socketTimeout) и 60 секунд ответа (streamTimeout) на каждом хите. Таймауты задают через setTimeout() и setStreamTimeout() или проектно в секции http_client_options.

Код делает json_decode от результата get() и дальше работает с null. Что пропущено?

Проверка на false: в legacy-режиме get() возвращает false при сетевой ошибке, а причину отдаёт getError(). Без проверки ошибка сети превращается в пустой массив и молчаливо ломает логику дальше.

Пользователь указывает URL картинки, сервер её скачивает через HttpClient. Какой параметр обязателен и почему?

setPrivateIp(false): по умолчанию privateIp включён, и клиент пойдёт на 127.0.0.1 или внутреннюю сеть, если подсунуть такой адрес. Это SSRF в чистом виде.

Нужно опросить пять складов, каждый отвечает по две секунды. Как уложиться в две секунды вместо десяти?

Режим PSR-18: sendAsyncRequest() для каждого Http Request ставит запрос в очередь, wait() выполняет их параллельно и отдаёт ответы, а Promise сохраняет соответствие ответа запросу.

Не сходится?

Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.

Знаете материал лучше?

Предложите ссылку: после проверки она появится в этом разделе.

Войти, чтобы предложить
Поделиться в Telegram
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…
Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти