如何向 Yesod 应用程序中的所有端点添加 header?

How can I add an header to all endpoints in Yesod appication?

我有一个 应用程序。 我需要为所有回复添加一个特定的 header。 很清楚如何使用 addHeader.

对特定端点执行此操作

比方说这个:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options

问题:

如何为所有端点配置一次 header?

您可以更改 Appinstance Yesod App 中的 yesodMiddleware :: Yesod site => HandlerFor site res -> HandlerFor site res 字段。例如:

instance Yesod App where
    -- ...
    <b>yesodMiddleware</b> handler = do
        <b>addHeader "X-Frame-Options" "sameorigin"</b>
        defaultYesodMiddleware handler

yesodMiddleware 是 "wrapped around" 目标处理程序的功能。您可以在查询处理程序之前和处理程序之后执行任务(例如对结果进行后处理)。