proxy: add Host header checking

fix issue #993

Signed-off-by: Tw <tw19881113@gmail.com>
This commit is contained in:
Tw 2016-08-04 13:01:52 +08:00
parent c110b27ef5
commit 94c63e42d6

View File

@ -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) {
"+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) {
} }
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) {
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) {