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 중국어 웹사이트의 기타 관련 기사를 참조하세요!