在 Yesod 中覆盖响应 header
Overwrite response header in Yesod
如何覆盖以前在 Yesod 中设置的响应 header?当我使用 addHeader
函数时,它会添加另一个具有相同名称的 header 而不是覆盖它。例如,如果在处理函数内部,我会这样做:
addHeader "foo" "bar"
addHeader "foo" "baz"
我明白了
foo: bar
foo: baz
但我只想
foo: baz
在我的例子中,header 是一个身份验证令牌,它的工作方式是,如果它出现在请求中,那么我会在响应中发回它。我将其实现为中间件。但是,如果是登录请求,则会生成一个新令牌,并且应该发送它而不是请求中的值 header.
addHeader
由 Writer 实施。
https://www.stackage.org/haddock/lts-8.21/yesod-core-1.4.35/src/Yesod.Core.Handler.html#addHeaderInternal
无法使用 addHeader
。
用sendWaiResponse
手工创建Response
也可以实现,但是比较乱
如何覆盖以前在 Yesod 中设置的响应 header?当我使用 addHeader
函数时,它会添加另一个具有相同名称的 header 而不是覆盖它。例如,如果在处理函数内部,我会这样做:
addHeader "foo" "bar"
addHeader "foo" "baz"
我明白了
foo: bar
foo: baz
但我只想
foo: baz
在我的例子中,header 是一个身份验证令牌,它的工作方式是,如果它出现在请求中,那么我会在响应中发回它。我将其实现为中间件。但是,如果是登录请求,则会生成一个新令牌,并且应该发送它而不是请求中的值 header.
addHeader
由 Writer 实施。
https://www.stackage.org/haddock/lts-8.21/yesod-core-1.4.35/src/Yesod.Core.Handler.html#addHeaderInternal
无法使用 addHeader
。
用sendWaiResponse
手工创建Response
也可以实现,但是比较乱