Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Go middleware samples for my blog post. http://justinas.org/writing-http-middleware-in-go/
- package main
- import (
- "net/http"
- )
- type SingleHost struct {
- handler http.Handler
- allowedHost string
- }
- func NewSingleHost(handler http.Handler, allowedHost string) *SingleHost {
- return &SingleHost{handler: handler, allowedHost: allowedHost}
- }
- func (s *SingleHost) ServeHTTP(w http.ResponseWriter, r *http.Request) {
- host := r.Host
- if host == s.allowedHost {
- s.handler.ServeHTTP(w, r)
- } else {
- w.WriteHeader(403)
- }
- }
- func myHandler(w http.ResponseWriter, r *http.Request) {
- w.Write([]byte("Success!"))
- }
- func main() {
- single := NewSingleHost(http.HandlerFunc(myHandler), "example.com")
- println("Listening on port 8080")
- http.ListenAndServe(":8080", single)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement