From cac1596ccf80a1c76da6d8690635d4154444d8a2 Mon Sep 17 00:00:00 2001 From: vijiln Date: Thu, 20 Aug 2020 19:27:50 +0530 Subject: [PATCH] Let user try own host header --- gohttp.go | 6 ++++++ request.go | 17 +++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/gohttp.go b/gohttp.go index 9bb13ce..0127b7a 100644 --- a/gohttp.go +++ b/gohttp.go @@ -52,6 +52,12 @@ func goRequest(r request) response { r.headers = append(r.headers, fmt.Sprintf("Host: %s", r.Hostname())) } + // let the request use user given host header + hostHeader := r.GetHeader("Host") + if hostHeader != "" { + req.Host = hostHeader + } + if !r.HasHeader("User-Agent") { r.headers = append(r.headers, fmt.Sprintf("User-Agent: %s", userAgent)) } diff --git a/request.go b/request.go index 1c33af8..59bc5ad 100644 --- a/request.go +++ b/request.go @@ -1,6 +1,7 @@ package main import ( + "fmt" "net/url" "strings" "time" @@ -50,3 +51,19 @@ func (r request) HasHeader(h string) bool { } return false } + +func (r request) GetHeader(h string) string { + var header string + norm := func(s string) string { + return strings.ToLower(strings.TrimSpace(s)) + } + for _, candidate := range r.headers { + + p := strings.SplitN(candidate, ":", 2) + if norm(p[0]) == norm(h) { + header := fmt.Sprintf("%s", norm(p[1])) + return header + } + } + return header +}