Commit d9da3460 authored by Russ Cox's avatar Russ Cox

net/http: document use of DetectContentType

Fixes #2365.

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/5653070
parent b5d81e5e
......@@ -59,7 +59,9 @@ type ResponseWriter interface {
// Write writes the data to the connection as part of an HTTP reply.
// If WriteHeader has not yet been called, Write calls WriteHeader(http.StatusOK)
// before writing the data.
// before writing the data. If the Header does not contain a
// Content-Type line, Write adds a Content-Type set to the result of passing
// the initial 512 bytes of written data to DetectContentType.
Write([]byte) (int, error)
// WriteHeader sends an HTTP response header with status code.
......
......@@ -9,15 +9,15 @@ import (
"encoding/binary"
)
// Content-type sniffing algorithm.
// References in this file refer to this draft specification:
// http://mimesniff.spec.whatwg.org/
// The algorithm prefers to use sniffLen bytes to make its decision.
// The algorithm uses at most sniffLen bytes to make its decision.
const sniffLen = 512
// DetectContentType returns the sniffed Content-Type string
// for the given data. This function always returns a valid MIME type.
// DetectContentType implements the algorithm described
// at http://mimesniff.spec.whatwg.org/ to determine the
// Content-Type of the given data. It considers at most the
// first 512 bytes of data. DetectContentType always returns
// a valid MIME type: if it cannot determine a more specific one, it
// returns "application/octet-stream".
func DetectContentType(data []byte) string {
if len(data) > sniffLen {
data = data[:sniffLen]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment