【问题标题】:WEBrick alter HTTP response headers on a per-file extension basisWEBrick 根据每个文件扩展名更改 HTTP 响应标头
【发布时间】:2015-05-25 16:01:05
【问题描述】:

是否可以针对特定的文件扩展名全局修改WEBrick HTTP 响应标头,例如提供具有svgz 扩展名的所有文件以包含 HTTP 标头“内容-Encoding: gzip" 在 HTTP 响应中?我似乎无法弄清楚如何做到这一点。

【问题讨论】:

    标签: ruby-on-rails webrick


    【解决方案1】:

    lib/dps/compression.rb

    module Dps 
      class Compression
        def initialize(app)  
          @app = app  
        end  
    
        def call(env)  
          status, headers, response = @app.call(env)
          if File.extname(env['REQUEST_URI']) == ".svgz" && status == 200 
            headers["Content-Encoding"] = "gzip"
          else
            nil 
          end 
          [status, headers, response]
        end  
      end 
    end
    

    config/application.rb

    config.autoload_paths += Dir["#{config.root}/lib/**/"]
    config.middleware.insert_before("ActionDispatch::Static", "Dps::Compression")
    

    【讨论】:

    • 啊@dps,现在我更好地理解了您真正在寻找什么......在这种情况下,自定义中间件可能是一个好主意,请注意:中间件是一个新元素您的整个(Rails)堆栈,因此每个请求都将运行此代码。我以为您只需要和端点来获取此类文件...您的原始问题可能描述性很小:) 如果您稍微编辑一下原始问题和标题会很好... PD。我不明白您对此答案的上一版。
    • Markets 感谢您今天提供的所有帮助。你是一个很好的灵魂,为我花费了这么多时间。我已经删除了我的最终编辑(事实证明它是多余的),并为了清楚起见修改了原始问题。
    • 不客气!这就是为什么社区很重要:) 感谢您澄清您的 OP。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-27
    • 2015-08-05
    • 1970-01-01
    • 2016-12-06
    • 2012-12-31
    相关资源
    最近更新 更多