APIを呼び出しながら大規模なJSONを返すDjangoアプリがあります。問題は、データを要求しているときに、データ自体が切り捨てられているため、フロントエンドがクラッシュしています。
私はDNSとSSLのクラウドフロントや、キャッシュのためのパフォーマンスの向上とその他の機能を提供しています。
私はAPIをカーリングしようとし、CURLから次のエラーを得ました。
_curl: (92) HTTP/2 stream 1 was not closed cleanly: INTERNAL_ERROR (err 2)
_
CloudFlareを無効にしてみましたが、機能しませんでした。しかし、私のlocalhostには、すべてがうまく機能します。
_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)
_
JSONはまったくチャンクされずに完全にフェッチされるべきです。
HTTPリクエストのContent-Length
ヘッダーを修正または削除します。
この問題が私に発生したとき、私はAWSゲートウェイに接続しようとしていました。 Postmanを使って正しい応答を得ることができましたが、同じヘッダーをcurl
にコピーした場合、このエラーが表示されます。
curl
での要求の長さがostmanにあったものと同じになっていなかったので、私のために最終的に働いていたのはContent-Length
ヘッダーを削除していました。
私の場合、私はAPIをテストしていたのでこれが大丈夫ですが、このヘッダーを生産で削除することをお勧めしません。 CODEBASE内のこれが行われている場合は、長さが正しく計算されていることを確認してください。
NGINXを使用すると、2つのHTTP2仮想ホストが同じサーバー名をリッスンしている場合は、このエラーをカールで体験できます。 Nginx Configファイルのチェックを実行すると、何かが正しくないことを知らせて警告が表示されます。重複リストの修正/削除この問題を修正しました。
# 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
_