diff --git a/resolver.go b/resolver.go index d3dd300..245e895 100644 --- a/resolver.go +++ b/resolver.go @@ -137,13 +137,13 @@ func newTransport(server string, transportType transport.Type, tlsConfig *tls.Co log.Debugf("Using HTTP(s) transport: %s", server) // Parse HTTP headers - headers := make(map[string]string) + headers := make(map[string][]string) for _, header := range opts.HTTPHeaders { parts := strings.SplitN(header, ":", 2) if len(parts) == 2 { name := strings.TrimSpace(parts[0]) value := strings.TrimSpace(parts[1]) - headers[name] = value + headers[name] = append(headers[name], value) log.Debugf("Added header %s: %s", name, value) } else { log.Warnf("Invalid header format: %s (expected 'Name: Value')", header) diff --git a/transport/http.go b/transport/http.go index 44c4722..abc686a 100644 --- a/transport/http.go +++ b/transport/http.go @@ -23,7 +23,7 @@ type HTTP struct { Method string HTTP2, HTTP3 bool NoPMTUd bool - Headers map[string]string + Headers map[string][]string conn *http.Client } @@ -85,9 +85,11 @@ func (h *HTTP) Exchange(m *dns.Msg) (*dns.Msg, error) { // Set custom headers if provided if h.Headers != nil { - for name, value := range h.Headers { - log.Debugf("Setting custom header %s: %s", name, value) - req.Header.Set(name, value) + for name, values := range h.Headers { + for _, value := range values { + log.Debugf("Setting custom header %s: %s", name, value) + req.Header.Add(name, value) + } } }