при каждом запросе реверс прокси сохраняет куки. Т.е если 1 раз авторизироваться на сайте, то реверс прокси должен возвращать авторизированную страничку всем пользователям.
Но у меня это так не работает, я авторизируюсь 1 раз, в выводе вижу что куки установлены,
useridtoken установлен. Захожу с другого браузера и получаю не авторизированную страничку
Но у меня это так не работает, я авторизируюсь 1 раз, в выводе вижу что куки установлены,
useridtoken установлен. Захожу с другого браузера и получаю не авторизированную страничку
C-подобный:
package main
import (
"fmt"
"log"
"net/http"
"net/http/cookiejar"
"net/http/httputil"
"net/url"
)
type CookieRoundTripper struct {
Jar *cookiejar.Jar
Tripper http.RoundTripper
}
func (c *CookieRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
c.Jar.SetCookies(req.URL, req.Cookies())
for _, el := range c.Jar.Cookies(req.URL) {
req.AddCookie(el)
fmt.Println("установил:", *el)
}
resp, err := c.Tripper.RoundTrip(req)
if err != nil {
return resp, err
}
c.Jar.SetCookies(resp.Request.URL, resp.Cookies())
return resp, err
}
func main() {
cookieJar, err := cookiejar.New(nil)
if err != nil {
log.Fatal(err)
}
proxy := httputil.NewSingleHostReverseProxy(&url.URL{
Scheme: "https",
Host: "quillbot.com",
})
proxy.Transport = &CookieRoundTripper{
Jar: cookieJar,
Tripper: http.DefaultTransport,
}
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
r.Host = "quillbot.com"
//log.Printf("\nURL: %s\nSocket: %s\nUsergent: %s\n", r.URL.Path, r.RemoteAddr, r.UserAgent())
proxy.ServeHTTP(w, r)
})
log.Fatal(http.ListenAndServe(":8099", nil))
}