Go での「http: 書き込みが宣言された Content-Length を超えています」エラー

WBOY
リリース: 2024-02-09 12:50:07
転載
676 人が閲覧しました

Go 中的“http:写入超过声明的 Content-Length”错误

phpエディターの真一が今日はGo言語でよく起こる「http:writeが宣言されたContent-Lengthを超えています」エラーについて紹介します。 Go 言語を使用して HTTP リクエストを作成すると、このエラーが発生することがあります。このエラーの理由は、リクエスト ヘッダーで宣言した Content-Length が、実際に送信されるリクエスト本文の長さと一致しないことです。次に、このエラーが発生する原因と解決方法について詳しく説明します。

質問の内容

私は Go を実験していて、ワーカー コルーチンによって処理される HTTP リクエストのキューを管理するアプリケーションを作成しました。

同時実行機能は正常に動作しているようですが、http 応答を送り返すときに次のエラーが発生します: 宣言された Content-Length よりも多くのコンテンツが書き込まれました。

完全なコードは次のとおりです:

リーリー

この問題を解決する方法はありますか?また、私は Go の同時実行性について非常に初心者なので、改善できると思いますか?ありがとう!

解決策

http.Handlerドキュメント:

によると

あなたの ハンドラーは、リクエスト/ライターをキューにプッシュして戻しています。これは、ハンドラーが戻った後に ResponseWriter に書き込もうとしていることを意味し、上記の規定に違反します (同期がないため、書き込みは実際には より前または同時に行われる可能性もあります)。戻る###)。

この問題を解決するには多くの方法がありますが、その 1 つのテクニックは次のとおりです:

リーリー

それは実際には要件によって異なります。一般的な解決策は、チャネルを使用することです (ハンドラーがチャネルにリクエストを送信し、複数のワーカーが同じチャネルから受信します)。

以上がGo での「http: 書き込みが宣言された Content-Length を超えています」エラーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!