ホームページ >バックエンド開発 >Golang >golang リクエストのリダイレクトの問題 (冗長エラー)

golang リクエストのリダイレクトの問題 (冗長エラー)

王林
王林転載
2024-02-15 10:30:091242ブラウズ

golang 请求重定向问题(多余的错误)

golang を使用してネットワーク リクエストを行う場合、リクエストのリダイレクトの問題が発生することがあります。この問題は、冗長エラーが原因で発生する可能性があります。 PHP エディターの Xigua が、ネットワーク リクエストをスムーズに進めるためにこの問題を解決する方法を説明します。見てみましょう!

質問内容

golang から非常に奇妙な動作が発生します。

投稿リクエストで何かを実行してから、リクエストをリダイレクトしたいと考えています。 それが機能するかどうかは、ランダムな要因によって異なります。

動作しない場合、次のエラーが表示されます:

「http: 冗長な応答。...からの WriteHeader 呼び出し」

関数が深くなるほど、リダイレクトが機能する可能性は低くなります。

  • 私の知る限り、リダイレクトしたのは 1 回だけ (または 0 回...)
  • リダイレクト前にヘッダーを書きません。
  • リダイレクトする前にライターに対して行ったのは、ライターをマップに書き込むことだけでした。

ここにすべてのコードをコピーしたくないので、要約します。

ハンドラーは POST リクエストを処理し、demand という名前のマップでリクエスト データを渡します。

次に、リクエストを解析してフォーム値を取得し、それを demand に保存します。 チャンネルに送信されます。

需要グラフはチャネルから次の関数に渡されます:

リーリー

F5 キーを押すと、最終的には正しくリダイレ​​クトされます。 writer.Write([]byte("same issues")) に単純に何かを書いてみましたが、同じ問題です。

私は Linux を使用しており、さまざまなブラウザを試しました。

質問: これは(既知の)バグですか?

解決策はありますか?

(クライアントへの書き込みを強制)

ありがとうございます

解決策

ようやく問題を理解し、解決策を見つけました。
質問:###

したがって、ライターリクエストは、実際の処理関数とは異なるスコープ関数で処理およびリダイレクトされます。 そして

actualhandling 関数が終了したとき。特定のコンテキスト要因により、ライター リクエストが期限切れになります。リクエストをリダイレクトしたり、リクエストに応答したりできなくなります。 ドキュメントには次のように書かれています:

https://pkg.go.dev/net/http p> なぜ時々動作するのかについて考えられる説明の 1 つは、おそらく「チャネル転送、処理、リダイレクト」が (場合によっては) 十分に速く行われ、

実際の ハンドラー関数がまだ閉じられていないということです。

データを処理する前にハンドラー関数をブロックすると、並列非同期処理の目的が無効になります。 そこで、最終的にすべてをハンドラー関数内にネストすることにしました。

賢い人は私を訂正したり、コンテキストと ResponseWriter に関するより良い説明を共有したりすることを歓迎します。

以上がgolang リクエストのリダイレクトの問題 (冗長エラー)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。