Это прямая ошибка компиляции. Я вижу метод, определенный для типа, который у меня есть, поэтому я не понимаю, почему он не компилируется.
package main
import (
"github.com/gorilla/mux"
"fmt"
"os"
"net"
"net/http"
"net/http/httputil"
"net/url"
"time"
"crypto/tls"
)
func main(){
router := mux.NewRouter();
origin, _ := url.Parse("http://localhost:4200/")
director := func(req *http.Request) {
req.Header.Add("X-Forwarded-Host", req.Host)
req.Header.Add("X-Origin-Host", origin.Host)
req.URL.Scheme = "https"
req.URL.Host = origin.Host
}
proxy := &httputil.ReverseProxy{Director: director}
proxy.Transport = &http.Transport{
Proxy: http.ProxyFromEnvironment,
Dial: (&net.Dialer{
Timeout: 30 * time.Second,
KeepAlive: 30 * time.Second,
}).Dial,
TLSHandshakeTimeout: 10 * time.Second,
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
router.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Println("Proxy: "+r.URL.Path)
proxy.ServeHTTP(w, r)
})
router.PathPrefix("/").Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
fmt.Println("Proxy: "+r.URL.Path)
proxy.ServeHTTP(w, r)
}))
router.HeadersRegexp("Content-Type", "application/(text|json)").Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
fmt.Println("Proxy: "+r.URL.Path)
proxy.ServeHTTP(w, r)
}))
err := http.ListenAndServeTLS(":443", "server.crt", "server.key", router)
if err != nil { fmt.Print(err) }
}
router.HeadersRegexp определяется в gorilla / mux / route.go. Смотрите строку 258 для примера в комментариях. Это скопировать / вставить оттуда. Что может быть причиной: router.HeadersRegexp undefined (тип * mux.Router не имеет поля или метода HeadersRegexp)
Спасибо ...