handlers.go 743 B

1234567891011121314151617181920212223242526272829
  1. package rest
  2. import (
  3. "net/http"
  4. "strings"
  5. )
  6. const (
  7. allowOrigin = "Access-Control-Allow-Origin"
  8. allOrigin = "*"
  9. allowMethods = "Access-Control-Allow-Methods"
  10. allowHeaders = "Access-Control-Allow-Headers"
  11. headers = "Content-Type, Content-Length, Origin"
  12. methods = "GET, HEAD, POST, PATCH, PUT, DELETE"
  13. separator = ", "
  14. )
  15. func CorsHandler(origins ...string) http.Handler {
  16. return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  17. if len(origins) > 0 {
  18. w.Header().Set(allowOrigin, strings.Join(origins, separator))
  19. } else {
  20. w.Header().Set(allowOrigin, allOrigin)
  21. }
  22. w.Header().Set(allowMethods, methods)
  23. w.Header().Set(allowHeaders, headers)
  24. w.WriteHeader(http.StatusNoContent)
  25. })
  26. }