ring-clojure / ring

Clojure HTTP server abstraction
MIT License
3.77k stars 520 forks source link

set-cookie doesn't set the new value of the cookie in :cookies if the cookie name exists. #388

Closed zendevil closed 4 years ago

zendevil commented 4 years ago

using set-cookie:

(set-cookie
        response
        "name"
        "new value"
        )

If "name" already exists in :cookies, then this doesn't change :value of the "name" in :cookies, but does prepend "name=new value" under :headers {"cookie" ...}

weavejester commented 4 years ago

Sorry, I don't understand. How is this not changing the value?

user=> (require '[ring.util.response :as resp])
nil

user=> (-> {} (resp/set-cookie "foo" "1"))
{:cookies {"foo" {:value "1"}}}

user=> (-> {} (resp/set-cookie "foo" "1") (resp/set-cookie "foo" "2"))
{:cookies {"foo" {:value "2"}}}