func (f *headerFilter) Request(ctx filters.FilterContext) { if f.typ != requestHeader { return } ctx.Request().Header.Add(f.key, f.value) if strings.ToLower(f.key) == "host" { ctx.SetOutgoingHost(f.value) } }
func (preserve filter) Request(ctx filters.FilterContext) { u, err := url.Parse(ctx.BackendUrl()) if err != nil { log.Error("failed to parse backend host in preserveHost filter", err) return } if preserve && ctx.OutgoingHost() == u.Host { ctx.SetOutgoingHost(ctx.Request().Host) } else if !preserve && ctx.OutgoingHost() == ctx.Request().Host { ctx.SetOutgoingHost(u.Host) } }
func (f *headerFilter) Request(ctx filters.FilterContext) { switch f.typ { case setRequestHeader: ctx.Request().Header.Set(f.key, f.value) if strings.ToLower(f.key) == "host" { ctx.SetOutgoingHost(f.value) } case appendRequestHeader, depRequestHeader: ctx.Request().Header.Add(f.key, f.value) if strings.ToLower(f.key) == "host" { ctx.SetOutgoingHost(f.value) } case dropRequestHeader: ctx.Request().Header.Del(f.key) } }