API-Verbindung über IPv6 vs. IPv4

Hallo zusammen,

ich habe ein Problem mit dem zeitnahen Zugriff auf die API. Ich greife auf folgende URL zu:

Ich habe einen API-Schlüssel und einen Benutzer erstellt, und bisher scheint alles in Ordnung zu sein.

Wenn ich es von Postman mit den richtigen Anmeldedaten teste, wird es sofort mit Daten zurückgegeben, wie ich es erwarten würde.

Das Problem tritt auf, wenn ich versuche, von einer anderen Stelle als Postman darauf zuzugreifen … wie von meinem Code. Es dauert MINUTEN, bis es zurückkommt, aber es kommt schließlich mit Daten zurück.

Das gleiche Problem tritt in einem Terminal mit folgendem Befehl auf:

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'

Das gleiche Verhalten wie bei meinem Python-Code. Ich glaube nicht, dass ich irgendwelche Konfigurationseinstellungen habe, die dies beeinflussen würden (auf dem Forum). Kann mir bitte jemand Rat geben oder helfen?

Vielen Dank!

Werden Postman und dein Beispiel-Befehlszeilen-Code auf demselben Rechner ausgeführt?

Hast du curl für einen dritten Vergleich versucht, anstatt wget?

Liefert es die Ergebnisse sofort zurück, wenn du die Option -4 zu wget hinzufügst?

Falls nicht, kannst du die (geschwärzte) Ausgabe posten, wenn du die Option -v hinzufügst?

Ja, es befindet sich auf derselben Maschine.

Michael,

ich habe die Option -4 ausprobiert (mit der ich nicht vertraut bin), und sie hat sofort und wie erwartet funktioniert. Anschließend habe ich die Option -v getestet, und falls ich das richtig verstanden habe, sieht es nach einem SSL-Timeout aus. Hier ist die Ausgabe von -v. Könntest du die Option -4 genauer erläutern? Danke! Hinweis: Ich musste einige Teile entfernen, da es Einschränkungen beim Posten von Links gibt.

Auflösen von community.tenxguitar.com (community.tenxguitar.com)… 2001:470:1:59e::139, 66.220.12.139
Verbinden mit
()|2001:470:1:59e::139|:443… fehlgeschlagen: Verbindungszeitüberschreitung.
Verbinden mit ()|66.220.12.139|:443… verbunden.
HTTP-Anfrage gesendet, warte auf Antwort… 200 OK
Länge: nicht angegeben [application/json]
Speichern unter: ‘7.json.4’

Ihr Rechner ist derzeit sowohl mit einer IPv4- als auch mit einer IPv6-Adresse konfiguriert, aber Ihre IPv6-Verbindung ist defekt, und Verbindungsversuche über IPv6 führen zu einer Zeitüberschreitung.

wget (und wahrscheinlich auch Ihr Python-Code) versucht zuerst eine IPv6-Verbindung, wartet bis zum Timeout und verbindet sich dann erfolgreich über IPv4. Es funktioniert jedoch, wenn -4 die Verwendung von IPv4 erzwingt.

Postman verwendet wahrscheinlich entweder nur IPv4 oder versucht gleichzeitig sowohl IPv4 als auch IPv6 und nutzt die erste erfolgreiche Verbindung.

Sie müssen untersuchen, warum IPv6-Verbindungen in Ihrem Netzwerk nicht funktionieren. Selbst wenn sie sofort fehlschlagen, ist das besser, da wget dann sofort über IPv4 versucht, anstatt auf IPv6 zu warten.

(Oder erzwingen Sie IPv4-only-Verbindungen.)

Vielen Dank, Sir! Das ist interessant. Ich werde mich damit befassen. Nochmals vielen Dank.