如何解决使用Golang解决ReverseProxy中的相对请求路径问题
我试图制造一个反向代理服务器,以便当我尝试访问localhost:8080 / forward / path时,它将响应和页面从http://www.wikipedia.org/path返回到浏览器。我无法这样做,这是代码。
package main
import (
"log"
"net/http"
"net/http/httputil"
"net/url"
)
func main() {
origin,_ := url.Parse("https://www.wikipedia.org")
director := func(req *http.Request) {
req.Header.Add("X-Forwarded-Host",req.Host)
req.Header.Add("X-Origin-Host",origin.Host)
req.URL.Scheme = "https"
req.URL.Host = origin.Host
req.URL.Path = req.URL.Path[8:len(req.URL.Path)]
log.Println(req.URL.Path)
}
proxy := &httputil.ReverseProxy{Director: director}
http.HandleFunc("/forward/",func(w http.ResponseWriter,r *http.Request) {
proxy.ServeHTTP(w,r)
log.Println("this is out " + r.URL.Path)
})
log.Fatal(http.ListenAndServe(":8080",nil))
}
注意:当我尝试使用localhost:8080 / path进行相同操作时,仅替换forward /及其下划线逻辑,代码可以正常工作,如下所示。
package main
import (
"log"
"net/http"
"net/http/httputil"
"net/url"
)
func main() {
origin,origin.Host)
req.URL.Scheme = "https"
req.URL.Host = origin.Host
//req.URL.Path = req.URL.Path[8:len(req.URL.Path)]
log.Println(req.URL.Path)
}
proxy := &httputil.ReverseProxy{Director: director}
http.HandleFunc("/",r)
log.Println("this is out " + r.URL.Path)
})
log.Fatal(http.ListenAndServe(":9001",nil))
}
我试图找到答案,相对URL似乎有问题。预先感谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。