blob: 84c7e1596ef366df5270d857ebbdb241ac82c86d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
package handlers
import (
"net/http"
"gitlab.com/gitlab-org/gitlab-pages/internal/request"
)
func HTTPSRedirectMiddleware(handler http.Handler, redirect bool) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if redirect && !request.IsHTTPS(r) {
redirectToHTTPS(w, r, http.StatusTemporaryRedirect)
return
}
handler.ServeHTTP(w, r)
})
}
func redirectToHTTPS(w http.ResponseWriter, r *http.Request, statusCode int) {
u := *r.URL
u.Scheme = request.SchemeHTTPS
u.Host = r.Host
u.User = nil
http.Redirect(w, r, u.String(), statusCode)
}
|