SocketError (Не удалось открыть TCP-соединение с XXX.com:443 (getaddrinfo: временный сбой в разрешении имени)) - PullRequest
0 голосов
/ 04 июля 2019

Я недавно интегрировал API перевода Tencent.На моей машине для разработки все работает нормально, но у меня возникают проблемы при выполнении запроса POST с моего сервера Heroku.

SocketError (Failed to open TCP connection to tmt.tencentcloudapi.com:443 (getaddrinfo: Temporary failure in name resolution))

Вопрос, который у меня возникает, заключается в том, чья проблема вызывает эту проблему?Heroku или Tencent?

ОБНОВЛЕНИЕ ПОСТ с кодом:

  host = "tmt.tencentcloudapi.com"
  endpoint = "https://" + host
  uri = URI.parse(endpoint)

  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true
  req = Net::HTTP::Post.new(endpoint, {'Content-Type' => 'application/json; charset=utf-8', 'Authorization' => authorization, 'Host' => host, 'X-TC-Action' => action, 'X-TC-Version' => version, 'X-TC-Timestamp' => timestamp.to_s, 'X-TC-Region' => region })

  req.body = params        
  res = http.request(req)

Ответы [ 2 ]

1 голос
/ 04 июля 2019

Ваш вопрос спрашивает, "чья проблема вызывает эту проблему?"и предложить двух виновников - позвольте мне предложить третьего (и вероятного) виновника: Великий брандмауэр Китая.

Heroku работает на AWS, что иногда делается правительством Китая.Сам Хероку также может быть заблокирован правительством Китая в зависимости от времени суток, месяца, года и наличия какой-либо чувствительной внутриполитической деятельности.Все это очень трудно предсказать.

Я наткнулся на это сообщение в блоге, в котором утверждается, что Heroku заблокирован в Китае: https://alexbosworth.net/post/13244162414/should-i-use-heroku

Приложения Heroku заблокированы в Китае -Я живу в Китае, я хочу услугу, которая не заблокирована здесь.Прогнозируется, что Китай станет крупнейшей экономикой в ​​мире в течение 5 лет, это важный рынок.

Учитывая, как работают разрешения DNS (и по умолчанию они не зашифрованы), Great Firewall выполняет DPI (глубокийпроверка пакетов) на любые входящие и исходящие пакеты.Когда он видит обратный IP-адрес, который находится в заблокированном диапазоне (например, IP-блок Heroku), тогда Великий брандмауэр блокирует любые пакеты из Китая и достижения вашего экземпляра Heroku в США.

Это объясняет, почему, если все официальные серверы для Tencent находятся в Китае, и Heroku заблокирован, тогда ваше разрешение DNS может завершиться ошибкой.

0 голосов
/ 05 июля 2019

Согласно документации Tencent по API https://cloud.tencent.com/document/api/551/15614

Я использую tmt.na-siliconvalley.tencentcloudapi.com вместо tmt.tencentcloudapi.com

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...