Skip to content

Commit

Permalink
fix: custom Host header.
Browse files Browse the repository at this point in the history
  • Loading branch information
ISNing committed May 3, 2024
1 parent de61ac8 commit b4f380c
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 8 deletions.
6 changes: 5 additions & 1 deletion pkg/handler/deleter/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,9 @@ func Handle(rw http.ResponseWriter, req *http.Request, rule types.Rule) {
return
}

req.Header.Del(rule.Header)
if strings.EqualFold(rule.Header, "Host") {
req.Host = ""
} else {
req.Header.Del(rule.Header)
}
}
6 changes: 5 additions & 1 deletion pkg/handler/join/join.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,11 @@ func Handle(rw http.ResponseWriter, req *http.Request, rule types.Rule) {
return
}

req.Header.Set(rule.Header, newHeaderVal)
if strings.EqualFold(rule.Header, "Host") {
req.Host = newHeaderVal
} else {
req.Header.Set(rule.Header, newHeaderVal)
}
}

// getValue checks if prefix exists, the given prefix is present,
Expand Down
12 changes: 10 additions & 2 deletions pkg/handler/rename/rename.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,22 @@ func Handle(rw http.ResponseWriter, req *http.Request, rule types.Rule) {
if rule.SetOnResponse {
rw.Header().Del(headerName)
} else {
req.Header.Del(headerName)
if strings.EqualFold(rule.Header, "Host") {
req.Host = ""
} else {
req.Header.Del(headerName)
}
}

for _, val := range headerValues {
if rule.SetOnResponse {
rw.Header().Set(rule.Value, val)
} else {
req.Header.Set(rule.Value, val)
if strings.EqualFold(rule.Value, "Host") {
req.Host = val
} else {
req.Header.Set(rule.Value, val)
}
}
}
}
Expand Down
18 changes: 15 additions & 3 deletions pkg/handler/rewrite/rewrite.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,11 @@ func Handle(rw http.ResponseWriter, req *http.Request, rule types.Rule) {
if rule.SetOnResponse {
rw.Header().Del(headerName)
} else {
req.Header.Del(headerName)
if strings.EqualFold(headerName, "Host") {
req.Host = ""
} else {
req.Header.Del(headerName)
}
}

for _, headerValue := range headerValues {
Expand All @@ -51,7 +55,11 @@ func Handle(rw http.ResponseWriter, req *http.Request, rule types.Rule) {
if rule.SetOnResponse {
rw.Header().Set(rule.Header, replacedHeaderValue)
} else {
req.Header.Set(headerName, headerValue)
if strings.EqualFold(headerName, "Host") {
req.Host = headerValue
} else {
req.Header.Set(headerName, headerValue)
}
}

continue
Expand All @@ -65,7 +73,11 @@ func Handle(rw http.ResponseWriter, req *http.Request, rule types.Rule) {
if rule.SetOnResponse {
rw.Header().Add(rule.Header, replacedHeaderValue)
} else {
req.Header.Add(headerName, replacedHeaderValue)
if strings.EqualFold(headerName, "Host") {
req.Host = replacedHeaderValue
} else {
req.Header.Add(headerName, replacedHeaderValue)
}
}
}
}
Expand Down
6 changes: 5 additions & 1 deletion pkg/handler/set/set.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,9 @@ func Handle(rw http.ResponseWriter, req *http.Request, rule types.Rule) {
return
}

req.Header.Set(rule.Header, rule.Value)
if strings.EqualFold(rule.Header, "Host") {
req.Host = rule.Value
} else {
req.Header.Set(rule.Header, rule.Value)
}
}

0 comments on commit b4f380c

Please sign in to comment.