Go Web サーバー: POST リクエストでの謎のリダイレクト
特定の URL (/myurl) に POST リクエストを行うと、開発者は予期しないエラーに遭遇します動作: リクエストはサーバーに直接到達しません。代わりに、301 リダイレクト応答が受信され、その後、サーバーによって処理されるセカンダリ GET リクエストが受信されます。
サーバー コードを調査すると、「/myurl/」パスのハンドラーが次の方法で登録されているようです。 http.HandleFunc("/myurl/", PHandler)。ただし、ブラウザが POST リクエストを行うと、(末尾のスラッシュなしで) "/myurl" に転送されます。
この問題を理解する鍵は、Go の http パッケージのデフォルトの動作にあります。 http.ServeMux タイプのドキュメントによると、末尾のスラッシュなしでリクエストが到着した場合、登録されたパスの末尾のスラッシュはリダイレクトをトリガーします。これは、リクエストが適切なハンドラに確実にルーティングされるようにすることを目的としています。
この場合、ハンドラは「/myurl/」に登録されているため、末尾のスラッシュのない「/myurl」に対するブラウザのリクエストは次のようになります。末尾にスラッシュを付けて「/myurl/」にリダイレクトします。これは、リクエストがサーバーに直接到達しないという観察結果を説明しています。
この問題を解決するには、開発者にはいくつかのオプションがあります。
これらのソリューションのいずれかを実装することで、開発者は予期しないリダイレクト動作を排除し、 POST リクエストは Go Web サーバーによって期待どおりに処理されることを確認します。
以上がMy Go Web サーバーが `/myurl` への POST リクエストを `/myurl/` にリダイレクトするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。