Internal Server Error 500 when Empty Host Header Sent
还没有人认领这个 Issue。
评估
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 新手友好度
- 45/100
- Issue 类型
- 缺陷
- 描述清晰度
- 基本清楚
- 活跃度
- 停滞
- 技术栈
- ruby
- 领域
- backend, networking
调研方向
使用所示的 config.ru 设置和空的 Host 标头重现该请求,然后通过 WEBrick 的 httpserver.rb 以及堆栈跟踪中提到的 rackup 处理程序跟踪该请求。确认格式错误的请求当前到达 Rack 时缺少 SERVER_NAME,并确认完成后的行为是返回 HTTP 400 响应而不是 500。
由索引模型根据 Issue 内容生成。
描述
Overview
When sent a GET request with an empty host header, WEBrick responds with error code 500, but it should respond with Error Code 400, for an invalid request.
Reproducing the Bug
- Clone, build, and install WEBrick. (Tested on ea124002ee5ff43b6cf846931b2cb898b3f47819)
- Set up a
config.rufile with the following contents:
class Server
def call(env)
[200, {}, []]
end
end
run Server.new
- Run
rackup. - Send a GET request with an empty host header, and observe WEBrick's response as follows:
printf 'GET / HTTP/1.1\r\nHost: \r\n\r\n' | ncat localhost 9292
Rack::Lint::LintError: env missing required key SERVER_NAME (Rack::Lint::LintError)
/usr/share/rubygems-integration/all/gems/rack-3.1.16/lib/rack/lint.rb:283:in `block in check_environment'
/usr/share/rubygems-integration/all/gems/rack-3.1.16/lib/rack/lint.rb:282:in `each'
/usr/share/rubygems-integration/all/gems/rack-3.1.16/lib/rack/lint.rb:282:in `check_environment'
/usr/share/rubygems-integration/all/gems/rack-3.1.16/lib/rack/lint.rb:63:in `response'
/usr/share/rubygems-integration/all/gems/rack-3.1.16/lib/rack/lint.rb:41:in `call'
/usr/share/rubygems-integration/all/gems/rack-3.1.16/lib/rack/show_exceptions.rb:31:in `call'
/usr/share/rubygems-integration/all/gems/rack-3.1.16/lib/rack/common_logger.rb:43:in `call'
/usr/share/rubygems-integration/all/gems/rack-3.1.16/lib/rack/content_length.rb:20:in `call'
/usr/share/rubygems-integration/all/gems/rackup-2.1.0/lib/rackup/handler/webrick.rb:111:in `service'
/var/lib/gems/3.3.0/gems/webrick-1.9.1/lib/webrick/httpserver.rb:140:in `service'
/var/lib/gems/3.3.0/gems/webrick-1.9.1/lib/webrick/httpserver.rb:96:in `run'
/var/lib/gems/3.3.0/gems/webrick-1.9.1/lib/webrick/server.rb:310:in `block in start_thread'
::1 - - [27/Aug/2025:18:40:52 +0000] "GET / HTTP/1.1" 500 1183 0.0002
- 主要语言
- Ruby
- 星标
- 327
- 派生
- 113
- 平均合并
- 7 天 6 小时
- 30 天内合并 PR
- 2
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
ruby/webrick 的其他 Issue
-
Retire superfluous quoting of Content-Type: charset [RFC7230]可能已有人在做 @jeremyevans 于 18 天前认领。 未关闭
难度 1/5 1 小时以内 新手友好度 92/100
-
难度 3/5 1-2 天 新手友好度 35/100
-
CGI script using LF line breaks in headers causes error可能已有人在做 @paulownia 于 559 天前认领。 未关闭
难度 3/5 1-2 天 新手友好度 45/100
-
难度 3/5 1-2 天 新手友好度 25/100
-
难度 2/5 1-3 小时 新手友好度 45/100
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 76/100
rubys/roundhouse#444 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 82/100
yegor256/rubocop-elegant#92 ·
-
bug
难度 2/5 1-3 小时 新手友好度 75/100
ecosyste-ms/awesome#812 ·
维护者通常 2 天内回复
-
难度 2/5 1-3 小时 新手友好度 88/100
维护者通常 1 天内回复