Ceci est une petite paix de code:native client http golang se bloque sur URI particulier
//resp, err := http.Get("https://alfabank.ru")
resp, err := http.Get("https://google.com")
if err != nil {
log.Fatalln(err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatalln(err)
}
fmt.Println(string(body))
Il fonctionne très bien avec Google, mais se bloque sur Alfa Bank (essayez de première ligne Décommentez et commentaires seconde). Je ne peux pas comprendre de quel côté ce problème :( Mais, par exemple,
curl https://alfabank.ru
fonctionne très bien.
Donc, je pense que le problème dans le client golang.
J'ai essayé d'utiliser tcpdump et voir le trafic infini entre ma machine et le serveur distant.
Pourriez-vous me aider à comprendre le problème?
MISE À JOUR: suivant les conseils des commentaires
Ok, curl envoie ces en-têtes:
> GET/HTTP/1.1
> Host: alfabank.ru
> User-Agent: curl/7.54.0
> Accept: */*
Alors, j'ai essayé
req, err := http.NewRequest(http.MethodGet, "http://alfabank.ru", nil)
if err != nil {
log.Fatalln(err)
}
req.Header.Add("Accept", "*/*")
req.Header.Add("User-Agent", "curl/7.54.0")
client := http.Client{}
resp, err := client.Do(req)
Il ne résout pas le problème.
Définissez les en-têtes appropriés. – Volker
Ce serveur semble avoir une implémentation http2 cassée. – JimB
Vous devriez probablement poster la solution comme réponse. Il y a une option pour répondre soi-même et c'est OK par les règles SO. –