22 lines
569 B
Go
22 lines
569 B
Go
|
package mux
|
||
|
|
||
|
import (
|
||
|
"io"
|
||
|
"net/http"
|
||
|
)
|
||
|
|
||
|
type optionsHandler struct{}
|
||
|
|
||
|
func (optionsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||
|
w.Header().Set("Content-Length", "0")
|
||
|
if r.ContentLength != 0 {
|
||
|
// Read up to 4KB of OPTIONS body (as mentioned in the
|
||
|
// spec as being reserved for future use), but anything
|
||
|
// over that is considered a waste of server resources
|
||
|
// (or an attack) and we abort and close the connection,
|
||
|
// courtesy of MaxBytesReader's EOF behavior.
|
||
|
mb := http.MaxBytesReader(w, r.Body, 4<<10)
|
||
|
io.Copy(io.Discard, mb)
|
||
|
}
|
||
|
}
|