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

Всем привет

func GetHandler(w http.ResponseWriter, r *http.Request){
    http.ServeFile(w, r, "./login.html")
}
func GetUName(w http.ResponseWriter, r *http.Request) string {
    r.ParseForm()
    name := r.FormValue("name")
    return name
}

func GetUAgent(r *http.Request) string {
    agent := r.Header.Get("User-Agent")
    return agent
}

func GetUIp(r *http.Request) string {
    host, _, _ := net.SplitHostPort(r.RemoteAddr)
    return host
}

func MakeCookie(w http.ResponseWriter, r *http.Request) (string, string) {
    name := GetUName(w, r)
    ip := GetUIp(r)
    uagent := GetUAgent(r)
    return ip + uagent + name, name
}
func FindingUname(w http.ResponseWriter, r *http.Request) []string {
    name := GetUName(w, r)
    db, _ := sql.Open("postgres", dbconnect)
    rowsUname, _ := db.Query("select cookie from AuthData where username=$1", name)
    db.Close()
    var Name []string
    var n string
    for rowsUname.Next() {
        rowsUname.Scan(&n)
        Name = append(Name, n)
    }
    rowsUname.Close()
    return Name
}

func RangeUnames(w http.ResponseWriter, r *http.Request) {
    cookie := FindingUname(w, r)
    CookieExample, _ := MakeCookie(w, r)
    for i := 0; i < len(cookie); i++ {
        if CookieExample == cookie[i] {
            http.SetCookie(w, &http.Cookie{Name: "user", Value: CookieExample})
        }
    }
}

Функция MakeCookie() создает куку следующего вида

192.168.1.100Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36huilakakoito

Но при попытке установить эту куку в браузер устанавливается ПОЧТИ полностью идентичная кука

192.168.1.100Mozilla/5.0 (X11 Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36huilakakoito

а в лог выводится

net/http: invalid byte ';' in Cookie.Value; dropping invalid bytes

Мне же нужно чтобы устанавливалась всегда полностью идентичная кука так как эта кука заносится в базу и в дальнейшем сверяется кука в браузере и кука в базе и из-за того что в браузере дропнулась точка с запятой, эти куки никогда не проходят проверку на идентичность из-за чего сервер некорректно обрабатывает подключение пользователя. Подскажите пожалуйста, как сделать чтобы не дропалась точка с запятой?и вообще возможно ли это?


Ответы (0 шт):