golang を使用してネットワーク リクエストを行う場合、リクエストのリダイレクトの問題が発生することがあります。この問題は、冗長エラーが原因で発生する可能性があります。 PHP エディターの Xigua が、ネットワーク リクエストをスムーズに進めるためにこの問題を解決する方法を説明します。見てみましょう!
golang から非常に奇妙な動作が発生します。
投稿リクエストで何かを実行してから、リクエストをリダイレクトしたいと考えています。 それが機能するかどうかは、ランダムな要因によって異なります。
動作しない場合、次のエラーが表示されます:
「http: 冗長な応答。...からの WriteHeader 呼び出し」
関数が深くなるほど、リダイレクトが機能する可能性は低くなります。
ここにすべてのコードをコピーしたくないので、要約します。
ハンドラーは POST リクエストを処理し、demand
という名前のマップでリクエスト データを渡します。
次に、リクエストを解析してフォーム値を取得し、それを demand
に保存します。
チャンネルに送信されます。
需要グラフはチャネルから次の関数に渡されます:
リーリーF5 キーを押すと、最終的には正しくリダイレクトされます。
writer.Write([]byte("same issues"))
に単純に何かを書いてみましたが、同じ問題です。
私は Linux を使用しており、さまざまなブラウザを試しました。
質問: これは(既知の)バグですか?
解決策はありますか?
(クライアントへの書き込みを強制)
ありがとうございます
ようやく問題を理解し、解決策を見つけました。
質問:###
actualhandling 関数が終了したとき。特定のコンテキスト要因により、ライター リクエストが期限切れになります。リクエストをリダイレクトしたり、リクエストに応答したりできなくなります。 ドキュメントには次のように書かれています:
https://pkg.go.dev/net/http p> なぜ時々動作するのかについて考えられる説明の 1 つは、おそらく「チャネル転送、処理、リダイレクト」が (場合によっては) 十分に速く行われ、
実際の ハンドラー関数がまだ閉じられていないということです。
データを処理する前にハンドラー関数をブロックすると、並列非同期処理の目的が無効になります。 そこで、最終的にすべてをハンドラー関数内にネストすることにしました。
賢い人は私を訂正したり、コンテキストと ResponseWriter に関するより良い説明を共有したりすることを歓迎します。
以上がgolang リクエストのリダイレクトの問題 (冗長エラー)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。