web-dev-qa-db-fra.com

Obtenir "CURL: (92) HTTP / 2 Stream 1 n'a pas été fermé proprement: interne_error (ERR 2)" tout en demandant de grandes données

J'ai un Django application qui renvoie un grand JSON tout en appelant une API. Le problème est lorsque je demande les données, les données elles-mêmes sont tronquées qui se bloque le frontal.

J'utilise le front de nuage pour DNS et SSL et une autre fonctionnalité fournie par elles pour la mise en cache et l'amélioration des performances.

J'ai essayé de curifier l'API et j'ai eu l'erreur suivante de CURL:

curl: (92) HTTP/2 stream 1 was not closed cleanly: INTERNAL_ERROR (err 2)

J'ai essayé de désactiver le cloudflare mais je n'ai pas travaillé. Cependant, sur mon localhost, tout fonctionne bien.

HTTP/2 stream 1 was not closed cleanly: INTERNAL_ERROR (err 2)
* Closing connection 0
* TLSv1.2 (OUT), TLS alert, Client hello (1):
curl: (92) HTTP/2 stream 1 was not closed cleanly: INTERNAL_ERROR (err 2)

Le JSON doit être entièrement récupéré sans se faire chunder.

4
Devopsception

Fixer ou supprimer le Content-Length En-tête dans votre demande HTTP.

J'essayais de me connecter à une passerelle AWS lorsque cette question m'a eu lieu. J'ai pu obtenir la bonne réponse en utilisant Postman, mais si je copié sur les mêmes en-têtes sur curl, cela me donnerait cette erreur.

Ce qui a finalement travaillé pour moi élever le Content-Length En-tête comme la longueur de la demande dans curl ne correspondait pas la même chose que dans le postman.

Depuis dans mon cas, je ne testais que l'API, donc c'est bien, mais je ne suggérerais pas de supprimer cet en-tête en production. Vérifiez que la longueur est calculée correctement si cela se produit dans une base de code.

1

Avec NGinx, vous pouvez faire l'expérience de cette erreur en boucle en disposant de deux hôtes virtuels HTTP2 à l'écoute sur le même nom de serveur. Exécuter un chèque sur votre fichier de configuration NGinx lancera un avertissement vous permettant de savoir que quelque chose n'est pas correct. Fixation/Suppression de la liste dupliquée corrige ce problème.

# nginx -t
nginx: [warn] conflicting server name "example.com" on 0.0.0.0:443, ignored
nginx: [warn] conflicting server name "example.com" on [::]:443, ignored
0
jaywilliams