Соединение по API через IPv6 против IPv4

Всем привет,

У меня возникла проблема с своевременным доступом к API. Я обращаюсь к следующему URL:
https://community.tenxguitar.com/c/7.json

Я создал API-ключ и пользователя, и пока всё выглядит хорошо.

Когда я тестирую это через Postman с правильными учётными данными, он мгновенно возвращает данные, как я и ожидал.

Проблема возникает, когда я пытаюсь получить доступ к нему из другого места, кроме Postman… например, из моего кода. Ответ приходит через МИНУТЫ, но в итоге данные всё же возвращаются.

Такая же проблема возникает в терминале с помощью следующей команды:

wget --no-check-certificate --quiet \
  --method GET \
  --timeout=0 \
  --header 'Api-Key: correct-api-key-here' \
  --header 'Api-Username: <correct user name here>' \
   'https://community.tenxguitar.com/c/7.json'

Поведение такое же, как и в моём Python-коде. Я не думаю, что у меня есть какие-либо настройки конфигурации (на форуме), которые могли бы повлиять на это. Не могли бы вы, пожалуйста, дать совет или помочь?

Спасибо!

Запускаются ли Postman и ваш пример командной строки на одной и той же машине?

Пробовали ли вы curl для третьего сравнения вместо wget?

Возвращает ли он результаты сразу, если добавить опцию -4 к wget?

Если нет, можете ли вы опубликовать (с удалёнными данными) вывод при добавлении опции -v?

Да, это на том же компьютере.

Майкл,

Я попробовал опцию -4 (с которой я не знаком), и она сработала сразу и так, как ожидалось. Затем я попробовал опцию -v, и, если я правильно понял, похоже, что это тайм-аут SSL. Вот вывод опции -v. Можешь ли ты подробнее рассказать об опции -4? Спасибо! Обратите внимание, что мне пришлось вырезать часть текста из-за ограничений на публикацию ссылок.

Разрешение имени community.tenxguitar.com (community.tenxguitar.com)… 2001:470:1:59e::139, 66.220.12.139
Подключение к
()|2001:470:1:59e::139|:443… ошибка: время ожидания соединения истекло.
Подключение к ()|66.220.12.139|:443… соединение установлено.
HTTP-запрос отправлен, ожидаем ответ… 200 OK
Длина: не указана [application/json]
Сохранение в: ‘7.json.4’

На вашем компьютере сейчас настроены как IPv4, так и IPv6 адреса, но подключение по IPv6 не работает, и попытки соединения через IPv6 завершаются по таймауту.

wget (и, вероятно, ваш код на Python) сначала пытается использовать IPv6, ожидает истечения времени ожидания, а затем успешно подключается через IPv4. Однако это работает, когда опция -4 принудительно использует IPv4.

Postman, скорее всего, либо использует только IPv4, либо попытает оба протокола — IPv4 и IPv6 — одновременно, используя тот, который подключится первым.

Вам нужно выяснить, почему подключения по IPv6 не работают в вашей сети. Даже если они сразу завершаются неудачей, это лучше, так как wget сразу перейдёт к попытке подключения через IPv4, не ожидая истечения таймаута IPv6.

(или принудительно используйте только IPv4 для всех подключений)

Спасибо, сэр! Это интересно. Я разберусь. Ещё раз спасибо.