Google GAX / gRPC в Node.js не работает с HTTP/S-прокси

Я пытаюсь получить образцы Dialogflow SDK из Google Dialogflow v2 Node.js SDK для работы. Я использую node.js v8.10.0, с версиями dialogflow node.js SDK 0.5.0, Я столкнулся с этой проблемой при попытке запустить образец "Определить намерение" из-за корпоративного прокси-сервера http/s:

Auth error:Error: write EPROTO 140163148314432:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:../deps/openssl/openssl/ssl/s23_clnt.c:827

Я наткнулся на этот пост здесь: https://medium.com/google-cloud/accessing-google-cloud-apis-though-a-proxy-fe46658b5f2a Хотя-a-proxy-fe46658b5f2a, который выглядел очень ориентированным на Java, но предполагал, что переменная окружения GRPC_PROXY_EXP быть установлен для того, чтобы заставить вызовы gRPC работать за прокси. Я установил переменную среды в оболочке, из которой я запускал узел с export GRPC_PROXY_EXP="$https_proxy" и попытался запустить образец снова, с той же проблемой. Обратите внимание, что мой $http_proxy, $https_proxy переменные одинаковы.

Тот же самый пример работает с той же машины, когда подключен к сети Wi-Fi без прокси; и tcpdump Анализ пакетов показывает, что используются два TCP-соединения (разные порты): одно работает (и открывается первым), а другое - нет, и обнаруживает ошибку с прокси. Второе соединение немедленно начинает CLIENT_HELLO Сообщение TLS, когда ему необходимо сначала пройти проверку подлинности и отправить HTTPS-прокси CONNECT сообщение (как и первое TCP-соединение).

Я что-то упустил или это проблема с библиотекой узлов dialogflow (google-gax / grpc)?

0 ответов

После нескольких дискуссий на нескольких досках обсуждения вопросов проекта узла Google выяснилось, что проблема заключалась в том, что при использовании HTTPS через HTTP-туннелирование gtoken Прямое использование API axios Пакет npm был подготовлен только для использования HTTPS (в соответствии с протоколом в URL-адресе).

Короче говоря; Dialogflow 0.8.2 содержит исправление этой проблемы, поскольку его транзитивные зависимости включают версию gtoken пакет, который использует gaxios вместо того axios. gaxios это пакет, который используется где-нибудь в google-gax библиотека для создания соединений HTTP/S (которая поддерживает прокси и обрабатывает вариант использования HTTPS поверх HTTP).

Другие вопросы по тегам