Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-pages.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'internal/request/request.go')
-rw-r--r--internal/request/request.go25
1 files changed, 23 insertions, 2 deletions
diff --git a/internal/request/request.go b/internal/request/request.go
index 06a45071..ba56f45b 100644
--- a/internal/request/request.go
+++ b/internal/request/request.go
@@ -5,6 +5,8 @@ import (
"net"
"net/http"
+ log "github.com/sirupsen/logrus"
+
"gitlab.com/gitlab-org/gitlab-pages/internal/domain"
)
@@ -14,6 +16,11 @@ const (
ctxHTTPSKey ctxKey = "https"
ctxHostKey ctxKey = "host"
ctxDomainKey ctxKey = "domain"
+
+ // SchemeHTTP name for the HTTP scheme
+ SchemeHTTP = "http"
+ // SchemeHTTPS name for the HTTPS scheme
+ SchemeHTTPS = "https"
)
// WithHTTPSFlag saves https flag in request's context
@@ -23,9 +30,23 @@ func WithHTTPSFlag(r *http.Request, https bool) *http.Request {
return r.WithContext(ctx)
}
-// IsHTTPS restores https flag from request's context
+// IsHTTPS checks whether the request originated from HTTP or HTTPS.
+// It reads the ctxHTTPSKey from the context and returns its value
+// It also checks that r.URL.Scheme matches the value in ctxHTTPSKey for HTTPS requests
+// TODO: remove the ctxHTTPSKey from the context https://gitlab.com/gitlab-org/gitlab-pages/issues/219
func IsHTTPS(r *http.Request) bool {
- return r.Context().Value(ctxHTTPSKey).(bool)
+ https := r.Context().Value(ctxHTTPSKey).(bool)
+
+ if https != (r.URL.Scheme == SchemeHTTPS) {
+ log.WithFields(log.Fields{
+ "ctxHTTPSKey": https,
+ "scheme": r.URL.Scheme,
+ }).Warn("request: r.URL.Scheme does not match value in ctxHTTPSKey")
+ }
+
+ // Returning the value of ctxHTTPSKey for now, can just switch to r.URL.Scheme == SchemeHTTPS later
+ // and later can remove IsHTTPS method altogether
+ return https
}
// WithHostAndDomain saves host name and domain in the request's context