如何为Ruby WEBrick命令行添加Header及自定义MIME类型配置
自定义Ruby测试Web服务器:添加MIME类型与Expires头
我太懂这种需求了——用ruby -run -e httpd . -p 8888搭测试服务器快得飞起,但想加些自定义功能又不想碰系统Ruby文件,还没怎么学过Ruby?别担心,下面给你一套直接复制粘贴就能用的方案,不用深入理解Ruby也能搞定。
第一步:创建自定义服务器脚本
新建一个名为custom_httpd.rb的文件,把下面的代码复制进去:
require 'webrick' require 'webrick/httpservlet/filehandler' # 自定义文件处理器,自动添加Expires响应头 class CustomFileHandler < WEBrick::HTTPServlet::FileHandler def do_GET(req, res) # 先执行默认的文件处理逻辑 super # 设置Expires头为当前时间1小时后,可按需修改 res['Expires'] = (Time.now + 3600).httpdate end end # 初始化服务器,指定端口和根目录(当前目录) server = WEBrick::HTTPServer.new( Port: 8888, DocumentRoot: Dir.pwd ) # 添加自定义MIME类型——这里是示例,你可以按需添加/修改 server.config[:MimeTypes]['.webm'] = 'video/webm' server.config[:MimeTypes]['.json'] = 'application/json' server.config[:MimeTypes]['.svg'] = 'image/svg+xml' # 替换默认的文件处理器为我们自定义的版本 server.mount('/', CustomFileHandler, Dir.pwd) # 处理Ctrl+C中断,优雅关闭服务器 trap('INT') { server.shutdown } # 启动服务器 server.start
第二步:按需调整配置
- 修改Expires时间:把代码里的
3600改成你需要的秒数,比如7天就是7*24*3600,也可以直接写固定时间Time.parse('2024-12-31').httpdate。 - 添加更多MIME类型:在
server.config[:MimeTypes]区块里继续加行即可,格式统一为'扩展名' => 'MIME类型'。
第三步:启动自定义服务器
在终端里运行:
ruby custom_httpd.rb
之后访问localhost:8888就可以了——和原来的命令体验一致,但现在服务器会自动给请求的文件加上Expires头,同时使用你自定义的MIME类型,完全不用碰系统Ruby文件~
内容的提问来源于stack exchange,提问作者Guntram Blohm
相关产品推荐
相关产品推荐

