F# Suave框架如何在接口响应中设置带HttpOnly、Secure属性的Cookie
解决方案
你可以通过Suave内置的Cookie模块快速实现带安全标记的Cookie写入,修改步骤如下:
1. 引入依赖命名空间
在代码开头的open引用块中新增Cookie模块引入:
open Suave.Cookie
2. 调整/login接口的处理逻辑
构造Cookie时开启安全属性后写入响应即可,完整的接口实现代码如下:
path "/login" >=> request (fun ctx -> // 执行你自己的登录逻辑生成sessionId let sessionId = someLoginLogic // 构造带安全标记的Cookie对象 let sessionCookie = Cookie.create "session_id" sessionId |> Cookie.withHttpOnly true // 开启HttpOnly,禁止前端JS读取,防范XSS |> Cookie.withSecure true // 开启Secure,仅HTTPS场景下传输Cookie |> Cookie.withPath "/" // 配置Cookie生效路径为全站 // 可选配置:加上则为持久Cookie,不加则为会话Cookie,关闭浏览器自动失效 |> Cookie.withExpiry (DateTime.UtcNow.AddDays(7.)) // 将Cookie写入响应后返回登录结果 setCookie sessionCookie >=> OK "登录成功" )
注意事项
你当前配置的服务绑定的是HTTP协议,Secure标记的Cookie仅会在HTTPS请求下被浏览器携带,本地HTTP测试时可以临时把withSecure的参数改为false,生产环境部署HTTPS后再开启即可。如果需要调整Cookie的作用域名、同站点策略等属性,还可以继续链式调用Cookie.withDomain、Cookie.withSameSite等方法配置。
内容的提问来源于stack exchange,提问作者Amar Pawar
相关产品推荐
相关产品推荐

