Connessione API tramite IPv6 vs. IPv4

Ciao a tutti,

Ho un problema con l’accesso tempestivo all’API. Sto accedendo al seguente URL:
https://community.tenxguitar.com/c/7.json

Ho creato una chiave API e un utente e finora sembra tutto a posto.

Quando la provo da Postman con le credenziali corrette, restituisce immediatamente i dati come mi aspetto.

Il problema si presenta quando provo ad accedervi da qualche altra parte, oltre a Postman… come dal mio codice. Ci vogliono MINUTI per restituire una risposta, ma alla fine restituisce i dati.

Stesso problema da un terminale con questo comando:

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'

Comportamento identico al mio codice Python. Non credo di avere impostazioni di configurazione che possano influenzare questo aspetto (sul forum). Qualcuno può gentilmente consigliarmi o aiutarmi?

Grazie!

Postman e il tuo codice da riga di comando vengono eseguiti sulla stessa macchina?

Hai provato curl per un terzo confronto, invece di wget?

Restituisce i risultati immediatamente se aggiungi l’opzione -4 a wget?

Se no, puoi pubblicare l’output (oscurato) se aggiungi l’opzione -v?

Sì, è sulla stessa macchina.

Michael,

Ho provato l’opzione -4 (con cui non sono familiare) e ha funzionato immediatamente e come previsto. Poi ho provato l’opzione -v e, se ho interpretato correttamente, sembra che si tratti di un timeout SSL. Ecco l’output di -v. Puoi spiegarmi meglio l’opzione -4? Grazie! Nota: ho dovuto tagliare alcune parti a causa delle restrizioni sui link nel post.

Risoluzione di community.tenxguitar.com (community.tenxguitar.com)… 2001:470:1:59e::139, 66.220.12.139
Connessione a
()|2001:470:1:59e::139|:443… fallita: timeout della connessione.
Connessione a ()|66.220.12.139|:443… connesso.
Richiesta HTTP inviata, in attesa della risposta… 200 OK
Lunghezza: non specificata [application/json]
Salvataggio in: ‘7.json.4’

La tua macchina ha attualmente configurati sia un indirizzo IPv4 che uno IPv6, ma la connettività IPv6 è interrotta e i tentativi di connessione via IPv6 scadono.

wget (e probabilmente il tuo codice Python) prova prima IPv6, va in timeout, quindi si connette correttamente tramite IPv4. Funziona invece quando -4 forza l’uso di IPv4.

Postman probabilmente utilizza solo IPv4, oppure prova contemporaneamente sia IPv4 che IPv6 e utilizza quello che si connette per primo.

Dovrai indagare sul motivo per cui le connessioni IPv6 non funzionano sulla tua rete. Anche se falliscono immediatamente, è meglio, poiché wget saprà di provare subito tramite IPv4 invece di attendere IPv6.

(o forza le tue connessioni a IPv4-only)

Grazie, signore! È interessante. Me ne informerò. Grazie ancora.