اتصال API عبر IPv6 مقابل IPv4

مرحبًا بالجميع،

لدي مشكلة في الوصول إلى واجهة برمجة التطبيقات (API) في الوقت المناسب. أقوم بالوصول إلى الرابط التالي:
https://community.tenxguitar.com/c/7.json

لقد أنشأت مفتاح واجهة برمجة التطبيقات ومستخدمًا، ويبدو كل شيء جيدًا حتى الآن.

عندما أجرب ذلك من 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'

نفس السلوك كما في كود بايثون الخاص بي. لا أعتقد أن لدي أي إعدادات تكوين تؤثر على هذا (على المنتدى). هل يمكن لأي شخص تقديم نصيحة أو مساعدة من فضلك؟

شكرًا!

هل يتم تشغيل 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 فقط)

شكرًا لك يا سيدي! هذا أمر مثير للاهتمام. سأبحث في الأمر. شكرًا مجددًا.