为什么 httputil.NewSingleHostReverseProxy

在下面的例子中:


package main


import (

    "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 "&#47;", is invalid.<p>

Reference&#32;&#35;9&#46;65b454b8&#46;1438233638&#46;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



繁星点点滴滴
浏览 252回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go