0

我在 clojure ring 中发送以下响应:

(res/set-cookie
         (res/redirect (env :some-url))
         "some-id"
         (->
          req
          foo-ns/bar
          :id
          )
         {:max-age (* 30 24 60 60 1000) :path "/"})

在打印此回复时,我得到:

{:status 302, :headers {"Location" "http://localhost:5000"}, :body "", :cookies {"some-id" {:value "1341313515135490454", :max-age 2592000000, :path "/"}}}

但是在客户端,cookie 没有设置,我可以在控制台中看到。我究竟做错了什么?

4

1 回答 1

1

看起来您正在使用ring.response/set-cookie设置 cookie。:cookies这将在您的响应映​​射中设置 cookie 属性。在将响应返回给浏览器之前,您需要将这些 cookie 编码为Set-Cookie浏览器可以理解的标头。为此,请将ring.middleware.cookies/wrap-cookies中间件添加到您的中间件堆栈中。

您应该期望您的响应类似于:

{:status 302
 :body ""
 :headers {"Location" "http://localhost:5000"
           "Set-Cookie" "some-id=1341313515135490454; max-age=2592000000; path=/"}}
于 2020-03-29T20:12:00.737 回答