|  TC Micro-Server
				
				8052702e98
				Updated permission modes | 4 năm trước cách đây | |
|---|---|---|
| .. | ||
| LICENSE | 4 năm trước cách đây | |
| README.md | 4 năm trước cách đây | |
| reverse.go | 4 năm trước cách đây | |
| reverse_test.go | 4 năm trước cách đây | |
A minimalist proxy library for go, inspired by net/http/httputil and add support for HTTPS using HTTP Tunnel
Support cancels an in-flight request by closing it's connection
go get github.com/cssivision/reverseproxy
package main
import (
    "net/http"
    "net/url"
    "github.com/cssivision/reverseproxy"
)
func main() {
    http.ListenAndServe(":8080", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        path, err := url.Parse("https://github.com")
        if err != nil {
            panic(err)
            return
        }
        proxy := reverseproxy.NewReverseProxy(path)
        proxy.ServeHTTP(w, r)
    }))
}
To use proxy server, you should set browser to use the proxy server as an HTTP proxy.
package main
import (
    "net/http"
    "net/url"
    "github.com/cssivision/reverseproxy"
)
func main() {
    http.ListenAndServe(":8080", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        path, err := url.Parse("http://" + r.Host)
        if err != nil {
            panic(err)
            return
        }
        proxy := reverseproxy.NewReverseProxy(path)
        proxy.ServeHTTP(w, r)
        // Specific for HTTP and HTTPS
        // if r.Method == "CONNECT" {
        //     proxy.ProxyHTTPS(w, r)
        // } else {
        //     proxy.ProxyHTTP(w, r)
        // }
    }))
}