Allow X-Forwarded-For delete operation
Co-authored-by: landrybe <lbenguigui@gmail.com>
This commit is contained in:
parent
dbc679dc30
commit
4d63eb30f9
4 changed files with 82 additions and 1 deletions
|
@ -10,6 +10,7 @@ import (
|
|||
|
||||
"github.com/traefik/traefik/v2/pkg/config/dynamic"
|
||||
"github.com/traefik/traefik/v2/pkg/log"
|
||||
"github.com/vulcand/oxy/v2/forward"
|
||||
)
|
||||
|
||||
// Header is a middleware that helps setup a few basic security features.
|
||||
|
@ -70,6 +71,10 @@ func (s *Header) modifyCustomRequestHeaders(req *http.Request) {
|
|||
// Loop through Custom request headers
|
||||
for header, value := range s.headers.CustomRequestHeaders {
|
||||
switch {
|
||||
// Handling https://github.com/golang/go/commit/ecdbffd4ec68b509998792f120868fec319de59b.
|
||||
case value == "" && header == forward.XForwardedFor:
|
||||
req.Header[header] = nil
|
||||
|
||||
case value == "":
|
||||
req.Header.Del(header)
|
||||
|
||||
|
|
|
@ -29,11 +29,14 @@ func TestNewHeader_customRequestHeader(t *testing.T) {
|
|||
desc: "delete a header",
|
||||
cfg: dynamic.Headers{
|
||||
CustomRequestHeaders: map[string]string{
|
||||
"X-Forwarded-For": "",
|
||||
"X-Custom-Request-Header": "",
|
||||
"Foo": "",
|
||||
},
|
||||
},
|
||||
expected: http.Header{},
|
||||
expected: http.Header{
|
||||
"X-Forwarded-For": nil,
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: "override a header",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue