func (r *response) WriteHeader(code int) { if r.headerSent { // Note: explicitly using Stderr, as Stdout is our HTTP output. fmt.Fprintf(os.Stderr, "CGI attempted to write header twice on request for %s", r.req.URL) return } r.headerSent = true fmt.Fprintf(r.bufw, "Status: %d %s\r\n", code, http.StatusText(code)) // Set a default Content-Type if _, hasType := r.header["Content-Type"]; !hasType { r.header.Add("Content-Type", "text/html; charset=utf-8") } r.header.Write(r.bufw) r.bufw.WriteString("\r\n") r.bufw.Flush() }
func (r *response) WriteHeader(code int) { if r.wroteHeader { return } r.wroteHeader = true if code == http.StatusNotModified { // Must not have body. r.header.Del("Content-Type") r.header.Del("Content-Length") r.header.Del("Transfer-Encoding") } else if r.header.Get("Content-Type") == "" { r.header.Set("Content-Type", "text/html; charset=utf-8") } if r.header.Get("Date") == "" { r.header.Set("Date", time.Now().UTC().Format(http.TimeFormat)) } fmt.Fprintf(r.w, "Status: %d %s\r\n", code, http.StatusText(code)) r.header.Write(r.w) r.w.WriteString("\r\n") }