本文主要是介绍net/httputil,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
httputil包提供了HTTP公用函数,是对net/http包的更常见函数的补充
- 反向代理的实现
NewSingleHostReverseProxy返回一个新的ReverseProxy。返回值会将请求的URL重写为target参数提供的协议、主机和基路径。如果target参数的Path字段为"/base",接收到的请求的URL.Path为"/dir",修改后的请求的URL.Path将会是"/base/dir"
func NewSingleHostReverseProxy(target *url.URL) *ReverseProxy
func (p *ReverseProxy) ServeHTTP(rw http.ResponseWriter, req *http.Request)
ReverseProxy是一个HTTP处理器,它接收一个请求,发送给另一个服务端,将回复转发给客户端
package mainimport ("net/http""net/http/httputil""net/url"
)
func main() {http.HandleFunc("/index.html", func(writer http.ResponseWriter, request *http.Request) {url,_:=url.ParseRequestURI("http://www.baidu.com")reverseProxy := httputil.NewSingleHostReverseProxy(url)reverseProxy.ServeHTTP(writer,request)})http.ListenAndServe(":8080",nil)
}
当我们请求http://localhost:8080/index.html ,系统会自动代理到http://www.baidu.com主机上,实际方位的地址为http://www.baidu.com/index.html
这篇关于net/httputil的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!