API接続:IPv6対IPv4

みなさん、こんにちは。

API にタイムリーにアクセスできない問題に直面しています。以下の URL にアクセスしています:

API キーとユーザーを作成し、現時点ではすべて問題なさそうです。

Postman で適切な認証情報を使用してテストすると、期待通りすぐにデータが返ってきます。

問題は、Postman 以外の場所(例えば自分のコード)からアクセスしようとした際に発生します。データが返ってくるまでに数分かかり、最終的にはデータが返ってきます。

terminal でも同じ問題が発生します:

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 コードと同じ挙動です。フォーラム側でこの問題に影響を与える設定はないと思います。どなたかアドバイスやサポートをお願いします。

ありがとうございます!

「いいね!」 1

Postman とあなたの例のコマンドラインコードは、どちらも同じマシンから実行されていますか?

wget ではなく、比較のために 3 番目の手段として curl を試しましたか?

「いいね!」 3

wget に -4 オプションを追加すると、結果は即座に返ってきますか?

もしそうでない場合、-v オプションを追加した際のプロット(伏字処理済み)を掲載していただけますか?

「いいね!」 5

はい、同じマシンにあります。

マイケル、

馴染みのない -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’

「いいね!」 1

お使いのマシンには IPv4 と IPv6 の両方のアドレスが設定されていますが、IPv6 の接続に問題があり、IPv6 経由の接続試行がタイムアウトしています。

wget(おそらく Python コードも)はまず IPv6 で接続を試み、タイムアウトした後、IPv4 で正常に接続しています。しかし、-4 を指定して IPv4 のみを強制すると動作します。

Postman はおそらく IPv4 のみを使用しているか、IPv4 と IPv6 を同時に試して、最初に接続できた方を使用する仕組みになっています。

お使いのネットワークで IPv6 接続が機能しない理由を調査する必要があります。接続が即座に失敗するだけでも、wget が IPv6 を待つことなくすぐに IPv4 を試すようになるため、改善されます。

(あるいは、接続を IPv4 のみに強制する)

「いいね!」 9

ありがとうございます、さん!それは興味深いですね。調べてみます。改めてありがとうございます。

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.