如何覆盖Yesod中先前设置的响应 header ?当我使用 addHeader
函数时,它将添加另一个具有相同名称的 header ,而不是覆盖它。例如,如果在处理程序函数中,我这样做:
addHeader "foo" "bar"
addHeader "foo" "baz"
我懂了
foo: bar
foo: baz
但我只想
foo: baz
在我的情况下, header 是身份验证 token ,并且它的工作方式是:如果请求中存在 header ,则我将其发送回响应中。我将其实现为中间件。但是,如果是登录请求,则会生成一个新 token ,并且应该发送该 token ,而不是发送来自请求 header 的值。
最佳答案
Writer的addHeader
实现。
https://www.stackage.org/haddock/lts-8.21/yesod-core-1.4.35/src/Yesod.Core.Handler.html#addHeaderInternal
使用addHeader
是不可能的。
可以通过使用 sendWaiResponse
并手动创建Response
来实现,但这很麻烦。