phpエディターの真一が今日はGo言語でよく起こる「http:writeが宣言されたContent-Lengthを超えています」エラーについて紹介します。 Go 言語を使用して HTTP リクエストを作成すると、このエラーが発生することがあります。このエラーの理由は、リクエスト ヘッダーで宣言した Content-Length が、実際に送信されるリクエスト本文の長さと一致しないことです。次に、このエラーが発生する原因と解決方法について詳しく説明します。
私は Go を実験していて、ワーカー コルーチンによって処理される HTTP リクエストのキューを管理するアプリケーションを作成しました。
同時実行機能は正常に動作しているようですが、http 応答を送り返すときに次のエラーが発生します: 宣言された Content-Length
よりも多くのコンテンツが書き込まれました。
完全なコードは次のとおりです:
リーリーこの問題を解決する方法はありますか?また、私は Go の同時実行性について非常に初心者なので、改善できると思いますか?ありがとう!
あなたの ハンドラー
は、リクエスト/ライターをキューにプッシュして戻しています。これは、ハンドラーが戻った後に ResponseWriter
に書き込もうとしていることを意味し、上記の規定に違反します (同期がないため、書き込みは実際には より前または同時に行われる可能性もあります)。戻る###)。
リーリー
それは実際には要件によって異なります。一般的な解決策は、チャネルを使用することです (ハンドラーがチャネルにリクエストを送信し、複数のワーカーが同じチャネルから受信します)。以上がGo での「http: 書き込みが宣言された Content-Length を超えています」エラーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。