Commit c6c221b8 authored by Matt Holt's avatar Matt Holt Committed by GitHub

Merge pull request #996 from tw4452852/host_header

proxy: add Host header checking
parents 985049e0 94c63e42
...@@ -357,9 +357,11 @@ func TestUpstreamHeadersUpdate(t *testing.T) { ...@@ -357,9 +357,11 @@ func TestUpstreamHeadersUpdate(t *testing.T) {
defer log.SetOutput(os.Stderr) defer log.SetOutput(os.Stderr)
var actualHeaders http.Header var actualHeaders http.Header
var actualHost string
backend := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { backend := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello, client")) w.Write([]byte("Hello, client"))
actualHeaders = r.Header actualHeaders = r.Header
actualHost = r.Host
})) }))
defer backend.Close() defer backend.Close()
...@@ -371,6 +373,7 @@ func TestUpstreamHeadersUpdate(t *testing.T) { ...@@ -371,6 +373,7 @@ func TestUpstreamHeadersUpdate(t *testing.T) {
"+Add-Me": {"Add-Value"}, "+Add-Me": {"Add-Value"},
"-Remove-Me": {""}, "-Remove-Me": {""},
"Replace-Me": {"{hostname}"}, "Replace-Me": {"{hostname}"},
"Host": {"{>Host}"},
} }
// set up proxy // set up proxy
p := &Proxy{ p := &Proxy{
...@@ -385,10 +388,12 @@ func TestUpstreamHeadersUpdate(t *testing.T) { ...@@ -385,10 +388,12 @@ func TestUpstreamHeadersUpdate(t *testing.T) {
} }
w := httptest.NewRecorder() w := httptest.NewRecorder()
const expectHost = "example.com"
//add initial headers //add initial headers
r.Header.Add("Merge-Me", "Initial") r.Header.Add("Merge-Me", "Initial")
r.Header.Add("Remove-Me", "Remove-Value") r.Header.Add("Remove-Me", "Remove-Value")
r.Header.Add("Replace-Me", "Replace-Value") r.Header.Add("Replace-Me", "Replace-Value")
r.Header.Add("Host", expectHost)
p.ServeHTTP(w, r) p.ServeHTTP(w, r)
...@@ -421,6 +426,10 @@ func TestUpstreamHeadersUpdate(t *testing.T) { ...@@ -421,6 +426,10 @@ func TestUpstreamHeadersUpdate(t *testing.T) {
t.Errorf("Request sent to upstream backend should replace value of %v header with %v. Instead value was %v", headerKey, headerValue, value) t.Errorf("Request sent to upstream backend should replace value of %v header with %v. Instead value was %v", headerKey, headerValue, value)
} }
if actualHost != expectHost {
t.Errorf("Request sent to upstream backend should have value of Host with %s, but got %s", expectHost, actualHost)
}
} }
func TestDownstreamHeadersUpdate(t *testing.T) { func TestDownstreamHeadersUpdate(t *testing.T) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment