删除 Yesod/Warp 中的服务器响应 header

Remove the Server response header in Yesod/Warp

如何删除 Yesod 中的 Server HTTP 响应 header?我找到了 code that's responsible for setting that header,但我不知道下一步该怎么做。我知道我可以使用 addHeader "Server" "" 将 header 值替换为空字符串,但我更愿意将其完全删除。

您必须在链接的函数内部调用方法。该函数将 "The Date and Server header is added if not exist in HTTP response header" 因此如果您不想要该行为,则需要重新实现它。

这就是为什么人们总是说要保持代码模块化和函数小;这个函数对于您的用例来说太大了,并且没有特定的更小的函数可以完全满足您的需求(否则它会被这个函数调用!)

我在 GitHub Warp 存储库上制作了 an issue,他们将其更改为当服务器名称为空时,不会发送 "Server" header。因此,解决方案是使用 setServerName "" 将服务器名称设置为空字符串。在我的例子中,我必须将它添加到 Application.hs 中的 warpSettings 函数中。请注意,您必须使用包含修复程序的 Warp 版本(截至 2017 年 5 月 3 日,它尚未发布,但您可以直接从 GitHub 中提取它)。