4
This commit is contained in:
parent
e554570004
commit
0b5421edc2
1 changed files with 14 additions and 5 deletions
|
|
@ -28,7 +28,7 @@ func New(ctx context.Context, host string) *ReverseProxy {
|
|||
targetQuery := target.RawQuery
|
||||
r.URL.Scheme = target.Scheme
|
||||
r.URL.Host = target.Host
|
||||
r.URL.Path, r.URL.RawPath = joinURLPath(target, r.URL)
|
||||
r.URL.Path, r.URL.RawPath = JoinURLPath(target, r.URL)
|
||||
if targetQuery == "" || r.URL.RawQuery == "" {
|
||||
r.URL.RawQuery = targetQuery + r.URL.RawQuery
|
||||
} else {
|
||||
|
|
@ -45,11 +45,11 @@ func (revereProxy *ReverseProxy) SetContext(ctx context.Context) {
|
|||
revereProxy.Context = ctx
|
||||
}
|
||||
func (revereProxy *ReverseProxy) DirectorFunc(df func(jup JoinURLPathFunc) DirectorFunc) {
|
||||
d := df(joinURLPath)
|
||||
d := df(JoinURLPath)
|
||||
revereProxy.Director = d
|
||||
}
|
||||
|
||||
func singleJoiningSlash(a, b string) string {
|
||||
func SingleJoiningSlash(a, b string) string {
|
||||
aslash := strings.HasSuffix(a, "/")
|
||||
bslash := strings.HasPrefix(b, "/")
|
||||
switch {
|
||||
|
|
@ -61,9 +61,9 @@ func singleJoiningSlash(a, b string) string {
|
|||
return a + b
|
||||
}
|
||||
|
||||
func joinURLPath(a, b *url.URL) (path, rawpath string) {
|
||||
func JoinURLPath(a, b *url.URL) (path, rawpath string) {
|
||||
if a.RawPath == "" && b.RawPath == "" {
|
||||
return singleJoiningSlash(a.Path, b.Path), ""
|
||||
return SingleJoiningSlash(a.Path, b.Path), ""
|
||||
}
|
||||
// Same as singleJoiningSlash, but uses EscapedPath to determine
|
||||
// whether a slash should be added
|
||||
|
|
@ -86,3 +86,12 @@ type JoinURLPathFunc func(*url.URL, *url.URL) (string, string)
|
|||
|
||||
// type SingleJoiningSlashFunc func(string, string) string
|
||||
type DirectorFunc func(*http.Request)
|
||||
|
||||
func StripPrefix(r *http.Request, prefix string) *http.Request {
|
||||
newPath := strings.TrimPrefix(r.URL.Path, prefix)
|
||||
if newPath == "" {
|
||||
newPath = "/"
|
||||
}
|
||||
r.URL.Path = newPath
|
||||
return r
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue