Merge pull request #485 from stefanprodan/refactor-headers

Refactor response header settings
This commit is contained in:
Stefan Prodan
2026-05-20 10:57:56 +03:00
committed by GitHub
4 changed files with 10 additions and 6 deletions

View File

@@ -120,6 +120,7 @@ func (s *Server) cacheReadHandler(w http.ResponseWriter, r *http.Request) {
return
}
setRawResponseHeaders(w)
w.WriteHeader(http.StatusOK)
w.Write([]byte(data))
}

View File

@@ -102,9 +102,7 @@ func (s *Server) echoHandler(w http.ResponseWriter, r *http.Request) {
s.JSONResponse(w, r, result)
} else {
w.Header().Set("Content-Type", "application/octet-stream")
w.Header().Set("X-Content-Type-Options", "nosniff")
w.Header().Set("Content-Security-Policy", "default-src 'none'")
setRawResponseHeaders(w)
w.Header().Set("X-Color", s.config.UIColor)
w.WriteHeader(http.StatusAccepted)
w.Write(body)

View File

@@ -87,6 +87,13 @@ func (s *Server) ErrorResponse(w http.ResponseWriter, r *http.Request, span trac
w.Write(prettyJSON(body))
}
// setRawResponseHeaders prevents XSS by ensuring browsers never interpret raw responses as HTML.
func setRawResponseHeaders(w http.ResponseWriter) {
w.Header().Set("Content-Type", "application/octet-stream")
w.Header().Set("X-Content-Type-Options", "nosniff")
w.Header().Set("Content-Security-Policy", "default-src 'none'")
}
func prettyJSON(b []byte) []byte {
var out bytes.Buffer
json.Indent(&out, b, "", " ")

View File

@@ -67,9 +67,7 @@ func (s *Server) storeReadHandler(w http.ResponseWriter, r *http.Request) {
s.ErrorResponse(w, r, span, "reading file failed", http.StatusInternalServerError)
return
}
w.Header().Set("Content-Type", "application/octet-stream")
w.Header().Set("X-Content-Type-Options", "nosniff")
w.Header().Set("Content-Security-Policy", "default-src 'none'")
setRawResponseHeaders(w)
w.WriteHeader(http.StatusAccepted)
w.Write([]byte(content))
}