为Heroku Cedar上的Rails中的资源设置自定义标头

hs1rzwqc  于 2022-12-13  发布在  其他
关注(0)|答案(2)|浏览(84)

我有一个使用Rails 4.0和asset pipeline的cedar应用程序。我想为asset pipeline中的所有资产设置自定义头文件。如何做到这一点?

rdrgkggo

rdrgkggo1#

一种简单的方法是使用机架插件,类似于:

class RackAssetFilter
   def initialize app
      @app = app
   end

   def call env
      @status, @headers, @body = @app.call env
      if env['PATH_INFO'].starts_with?( "/assets/" )
         @headers['X-Header-1'] = 'value'
         # ... 
      end
      return [@status, @headers, @body]
   end
end

要启用它,请在application.rb中:

config.middleware.insert_before( ActionDispatch::Static, RackAssetFilter )

请记住,在将RackAssetFilter插入到application.rb中的中间件堆栈之前,需要通过require声明或加载RackAssetFilter

jqjz2hbq

jqjz2hbq2#

从Rails 5开始,您可以在相应环境的配置文件中使用config public_file_server.headers,以应用所需的头文件,例如:

# in config/environments/production.rb
    config.public_file_server.headers = {
     "Cache-Control" => "public, max-age=31536000"
    }

上面的代码片段将为生产环境中的资产配置带有public, max-age=31536000值的Cache-Control头。

相关问题