• XSS.stack #1 – первый литературный журнал от юзеров форума

не устанавливаются куки в реверс прокси

asddddd

(L3) cache
Пользователь
Регистрация
14.07.2022
Сообщения
154
Реакции
46
при каждом запросе реверс прокси сохраняет куки. Т.е если 1 раз авторизироваться на сайте, то реверс прокси должен возвращать авторизированную страничку всем пользователям.
Но у меня это так не работает, я авторизируюсь 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))
}
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх