Go ミドルウェアでのサーバー ヘッダーのオーバーライド
背景
Go ではミドルウェアを使用できますHTTP リクエストとレスポンスを処理および変更します。ただし、HTTP ヘッダーを制御するサーバー ミドルウェアを追加するときに、他のハンドラーもサーバー ヘッダーを設定すると、応答に複数のサーバー ヘッダーが存在するという問題が発生する可能性があります。
考えられる解決策
type serverWriter struct { w http.ResponseWriter name string wroteHeader bool } func (s serverWriter) WriteHeader(code int) { if s.wroteHeader == false { s.w.Header().Set("Server", s.name) s.wroteHeader = true } s.w.WriteHeader(code) } func Server(h http.Handler, serverName string) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { sw := serverWriter{ w: w, name: serverName, wroteHeader: false, } h.ServeHTTP(sw, r) }) }
追加メモ
以上がGo ミドルウェアで競合するサーバー ヘッダーをオーバーライドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。