Skip to content

Commit 6f4a529

Browse files
committed
feat(proxy): use Rewrite instead of Director for ReverseProxy
1 parent 40b6873 commit 6f4a529

File tree

3 files changed

+13
-13
lines changed

3 files changed

+13
-13
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ ehfs -l 8080 -r /path/to/share --return '#.git|.htaccess#403'
142142
```
143143

144144
## Compile
145-
Minimal required Go version is 1.18.
145+
Minimal required Go version is 1.20.
146146
```sh
147147
go build main.go
148148
```

README.zh-CN.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ ehfs -l 8080 -r /path/to/share --return '#.git|.htaccess#403'
140140
```
141141

142142
## 编译
143-
至少需要Go 1.18版本
143+
至少需要Go 1.20版本
144144
```sh
145145
go build main.go
146146
```

src/middleware/proxy.go

+11-11
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,16 @@ import (
1111
func getProxyMiddleware(arg [2]string, preOutputMids []middleware.Middleware) (middleware.Middleware, error) {
1212
var err error
1313
var reMatch *regexp.Regexp
14-
var replace string
14+
var replacement string
1515

1616
reMatch, err = regexp.Compile(arg[0])
1717
if err != nil {
1818
return nil, err
1919
}
20-
replace = arg[1]
20+
replacement = arg[1]
2121

2222
proxy := &httputil.ReverseProxy{
23-
Director: func(request *http.Request) {},
23+
Rewrite: func(proxyReq *httputil.ProxyRequest) {},
2424
}
2525

2626
return func(w http.ResponseWriter, r *http.Request, context *middleware.Context) (result middleware.ProcessResult) {
@@ -34,7 +34,7 @@ func getProxyMiddleware(arg [2]string, preOutputMids []middleware.Middleware) (m
3434
preOutputMids[i](w, r, context)
3535
}
3636

37-
targetUrl, err := util.ReplaceUrl(reMatch, requestURI, replace)
37+
targetUrl, err := util.ReplaceUrl(reMatch, requestURI, replacement)
3838
if err != nil {
3939
util.LogError(context.Logger, err)
4040
w.WriteHeader(http.StatusBadRequest)
@@ -61,17 +61,17 @@ func getProxyMiddleware(arg [2]string, preOutputMids []middleware.Middleware) (m
6161
}
6262
}
6363

64-
proxyReq := &http.Request{
64+
outHeader := r.Header.Clone()
65+
outHeader.Set("Host", targetUrl.Host)
66+
outHeader.Set("Referer", targetUrl.RequestURI())
67+
outHeader.Set("Origin", targetUrl.Scheme+"://"+targetUrl.Host)
68+
outReq := &http.Request{
6569
Method: r.Method,
6670
URL: targetUrl,
6771
Body: r.Body,
68-
Header: r.Header.Clone(),
72+
Header: outHeader,
6973
}
70-
71-
proxyReq.Header.Set("Host", targetUrl.Host)
72-
proxyReq.Header.Set("Referer", targetUrl.RequestURI())
73-
proxyReq.Header.Set("Origin", targetUrl.Scheme+"://"+targetUrl.Host)
74-
proxy.ServeHTTP(w, proxyReq)
74+
proxy.ServeHTTP(w, outReq)
7575
return
7676
}, nil
7777
}

0 commit comments

Comments
 (0)