在下面的例子中:package mainimport ( "fmt" "log" "net/http" "net/http/httputil" "net/url")func main() { p := new(Proxy) //host := "www.google.com" // WORKS AS EXPECTED host := "www.apple.com" // GIVES AN ERROR u, err := url.Parse(fmt.Sprintf("http://%v/", host)) if err != nil { log.Printf("Error parsing URL") } p.proxy = httputil.NewSingleHostReverseProxy(u) http.Handle("/", p) log.Fatal(http.ListenAndServe("localhost:8000", nil))}type Proxy struct { proxy *httputil.ReverseProxy}func (p *Proxy) ServeHTTP(w http.ResponseWriter, r *http.Request) { p.proxy.ServeHTTP(w, r)}将 Chrome 指向“localhost:8000”时,将“www.google.com”与“www.apple.com”交换会导致此错误:无效的网址请求的 URL“/”无效。参考 #9.a61a32b8.1438231668.41733295做更多的挖掘,对于 www.apple.com,我得到:➜ ~ curl --ipv4 -v localhost:8000< HTTP/1.1 400 Bad Request< Content-Length: 194< Content-Type: text/html< Date: Thu, 30 Jul 2015 05:20:38 GMT< Expires: Thu, 30 Jul 2015 05:20:38 GMT< Mime-Version: 1.0* Server AkamaiGHost is not blacklisted< Server: AkamaiGHost< <HTML><HEAD><TITLE>Invalid URL</TITLE></HEAD><BODY><H1>Invalid URL</H1>The requested URL "/", is invalid.<p>Reference #9.65b454b8.1438233638.1f1b8a40</BODY></HTML>* Connection #0 to host localhost left intact对于 www.google.com:➜ ~ curl --ipv4 -v localhost:8000< HTTP/1.1 302 Found< Alternate-Protocol: 80:quic,p=0< Cache-Control: private< Content-Length: 219< Content-Type: text/html; charset=UTF-8< Date: Thu, 30 Jul 2015 05:03:16 GMT< Location: http://www.google.com/* Server sffe is not blacklisted< Server: sffe< X-Content-Type-Options: nosniff< X-Xss-Protection: 1; mode=block< <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"><TITLE>302 Moved</TITLE></HEAD><BODY><H1>302 Moved</H1>The document has moved<A HREF="http://www.google.com/">here</A>.</BODY></HTML>* Connection #0 to host localhost left intact
1 回答
- 1 回答
- 0 关注
- 251 浏览
添加回答
举报
0/150
提交
取消