FSharp Suave - 如何在响应中设置 cookie?
Posted
技术标签:
【中文标题】FSharp Suave - 如何在响应中设置 cookie?【英文标题】:FSharp Suave - How to set cookies in the response? 【发布时间】:2022-01-04 15:27:22 【问题描述】:我在 Suave 中配置了一个简单的 HTTP 服务器,如下所示。
open System
open Suave
open Suave.Operators
open Suave.Filters
open Suave.Successful
[<EntryPoint>]
let main argv =
let httpPort = 9000
let httpConfig =
defaultConfig with bindings = [ HttpBinding.createSimple HTTP "0.0.0.0" httpPort ]
let httpApp =
choose
[ POST >=> choose
[
path "/login" >=>
request (fun ctx ->
let sessionId = someLoginLogic
)
]
]
startWebServer httpConfig httpApp
在这里,我有一个登录端点,它将生成一个随机会话 id,我想在带有 HttpOnly 和 Secure 标志的 cookie 中设置该会话 id。
【问题讨论】:
【参考方案1】:在 Suave 中设置 cookie 的典型方法是通过其 cookie 状态存储,如 here 所述:
statefulForSession
>=> setSessionValue "sessionId" someLoginLogic
但是,这并不能让您明确设置 cookie 的 secure
和 httpOnly
标志。如果您想这样做,我认为您可以像这样手动进行:
statefulForSession
>=> Suave.Cookie.setCookie (
HttpCookie.create "sessionId" someLoginLogic None None None true true None)
【讨论】:
以上是关于FSharp Suave - 如何在响应中设置 cookie?的主要内容,如果未能解决你的问题,请参考以下文章