万茜演过的三级:用Golang Go语言写个http代理服务器

来源:百度文库 编辑:中财网 时间:2024/04/29 01:13:44

Go的http包封装的实在很BT,几十行代码就能写个http代理服务器。支持get,post,支持cookie,支持gzip。对了需要使用最新的源码编译,不然会有BUG。自己hg 下载源码编译一下才行,最新的一个BUG刚刚被修正。不多说直接上代码。

123456789101112131415161718192021222324252627282930313233package main import (    "http"    "log"    "os"    "io/ioutil") func handler(w http.ResponseWriter, r *http.Request) {    resp, err := http.DefaultClient.Do(r)    defer resp.Body.Close()    if err != nil { panic(err) }    for k, v := range resp.Header {        for _, vv := range v {            w.Header().Add(k, vv)        }    }    for _, c := range resp.SetCookie {        w.Header().Add("Set-Cookie", c.Raw)    }    w.WriteHeader(resp.StatusCode)    result, err := ioutil.ReadAll(resp.Body)    if err != nil && err != os.EOF { panic(err) }    w.Write(result)} func main() {    http.HandleFunc("/", handler)    log.Println("Start serving on port 8888")    http.ListenAndServe(":8888", nil)    os.Exit(0)}

原创文章转载请注明出明出处,

http://kejibo.com/golang-http-proxy-server/