为了添加cookie支持到你的Ring处理器,你需要在你的wrap-cookies
中间件中包装它:
- (use 'ring.middleware.cookies)
- (def app
- (wrap-cookies your-handler))
这会添加:cookies
key到请求map中,这个请求map将会包含一个像这样的cookies map:
- {"session_id" {:value "session-id-hash"}}
想要设置一个cookie,你需要添加一个:cookies
key到你的响应map:
- {:status 200
- :headers {}
- :cookies {"session_id" {:value "session-id-hash"}}
- :body "Setting a cookie."}
不但可以设置cookie的值,你也可以设置额外的属性:
:domain
- 限制cookie到一个特殊的域:path
- 限制cookie到一个特殊的路径:secure
- 限制cookie到HTTPS URLS,如果为true的话:http-only
- 限制cookie到HTTP,如果为true的话(不可通过 例如:javascript 访问):max-age
- 设置cookie到期的秒数:expires
- 设置一个特殊的cookie到期日期和时间:same-site
- 设置为:strict或者:lax以确定在处理跨站点(cross-site)请求时是否发送cookie
所以,如果你想要一个安全的cookie,在一小时内到期,你可以使用:
- {"secret" {:value "foobar", :secure true, :max-age 3600}}
当前内容版权归 clojure-china 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 clojure-china .