Internal Server Error 500 when Empty Host Header Sent
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 45/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- ruby
- Lĩnh vực
- backend, networking
Hướng nghiên cứu
Tái hiện request bằng thiết lập config.ru được hiển thị và header Host trống, sau đó lần theo request qua httpserver.rb của WEBrick và rackup handler được đề cập trong stack trace. Xác nhận rằng request không hợp lệ hiện đến Rack với SERVER_NAME bị thiếu và hành vi hoàn chỉnh là phản hồi HTTP 400 thay vì 500.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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
- Ngôn ngữ chính
- Ruby
- Star
- 327
- Fork
- 113
- Merge trung bình
- 4 giờ 2 phút
- Pull request đã merge (30 ngày)
- 1
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của ruby/webrick
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 92/100
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 45/100
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 25/100
Issue tương tự
-
user-reported
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
Kong/developer.konghq.com#7316 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
TheOdinProject/curriculum#31408 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
-
CI: json 3.0.2 removed `quirks_mode`, breaking ActiveSupport's JSON encoder on every test job Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
bensheldon/good_job#1816 · 5 bình luận ·