HttpClient из dart:io принимает решение о прокси через findProxy. Функция обратного вызова возвращает директиву в стиле PAC:

import 'dart:io';

final client = HttpClient()
  ..findProxy = (_) => 'PROXY proxy.example.net:8080';

Используйте этот клиент для запросов приложения. Возврат http://proxy.example.net:8080 — неверный формат для этого обратного вызова; поддерживаемая форма — PROXY, за которым следуют хост и порт. Для разрешённых публичных запросов возьмите HTTP-кандидата из списка HTTP-прокси и оформите его как эту директиву.

Обратный вызов получает URI назначения, поэтому может вернуть DIRECT для намеренного обхода. Результат вроде PROXY proxy.example.net:8080; DIRECT также разрешает прямой резервный путь, когда прокси недоступен. Опустите DIRECT, если такой резервный путь не нужен.

Без функции findProxy этот API использует прямые соединения. Приложения, которым нужен выбор на основе окружения, могут назначить HttpClient.findProxyFromEnvironment обратному вызову.

Это относится к коду Flutter, использующему dart:io на поддерживаемых нативных платформах. Запросы Flutter Web используют сетевые возможности браузера и требуют его политики прокси.

Похожие статьи