【问题标题】:How to remove the "Server" HTTP response header from my Rack app如何从我的 Rack 应用程序中删除“服务器”HTTP 响应标头
【发布时间】:2012-12-03 22:13:01
【问题描述】:

我正在尝试从运行在 Heroku 上的 ruby​​ on rails 应用程序中的 http 响应标头中删除服务器信息,但我被卡住了。检查响应标头给了我:

Server:thin 1.5.0 codename Knife

谁能指出我正确的方向?

【问题讨论】:

  • @slivu Server 标头在所有 Rack 中间件返回后由 Thin 添加,您链接的问题仅涉及删除应用程序添加的其他标头。 (另一个建议使用 nginx 去除标头的答案可能有效,但不适用于 Heroku cedar 堆栈。)

标签: ruby-on-rails ruby heroku rack


【解决方案1】:

在组装响应时,此 Server 标头为 set by the Thin server。 recent commit adds the ability to set the Server to something else,但看起来你不能完全删除它。

您可以做的一件事是将Thin::VERSION 常量的值设置为nil,这样就不会发送Server 标头:

Thin.send :remove_const, :SERVER
Thin::SERVER = nil

第一行是避免在更改常量时产生的警告。现在,当 Thin 尝试设置 Server 标头时,它会看到它是 nil 和 skips it,因此根本没有设置标头。

【讨论】:

  • 谢谢马特。出于某种原因,这对我来说似乎有点骇人听闻。我刚刚找到了一个使用 Rack 中间件的解决方案(现在将发布这个),我更喜欢这个解决方案。
  • @JonasGrau 我同意这有点骇人听闻,但是添加 Server 标头的代码几乎是“硬编码”到 Thin 中,所以我不知道您还能如何控制它。我很想看看你的中间件解决方案——据我所知,头文件是在所有中间件运行后添加的,并且独立于 Rack,所以我认为你不会影响中间件的头文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-11
  • 1970-01-01
  • 2014-11-06
  • 2021-06-22
  • 1970-01-01
  • 1970-01-01
  • 2010-11-13
相关资源
最近更新 更多