Rails自定义图像标题

时间:2012-11-27 01:23:38

标签: ruby-on-rails ruby-on-rails-3 image http-headers

当有人请求图片时,是否可以修改Rails 3中的HEADER?例如:

http://localhost:3000/assets/myimg.png

我想在标题中添加Access-Control-Allow-Origin:“*”,以便我可以通过JavaScript远程下载图像文件。

更新1

我有资产文件夹下的图像的答案来更改标题,但现在我还需要为公共图像做同样的事情。我尝试了下面相同的方法,但没有运气。

示例网址

http://localhost:3000/images/stuff.png

我尝试使用Rack MiddleWare,但在转到公共图像时它没有运行调用方法。我也试过了LocationMatch(在生产环境中),同样没有运气。

我尝试将公共图片结束以更改标题?

更新2

所以,我确实设法让它通过LocationMatch工作,但图像无法缓存。有没有办法通过apache禁用图像缓存?

1 个答案:

答案 0 :(得分:5)

资产将被“编译”并由Web服务器(Nginx / Apache)直接提供,因此Rails不会在生产中提供它。您需要修改Web服务器的配置以添加标头。

Apache中的类似内容。

<LocationMatch "^/assets/.*$">
  Header add Access-Control-Allow-Origin "*"
  ...
</LocationMatch>

这是在Nginx。

location ~ ^/assets/ {
  add_header Access-Control-Allow-Origin *;
  ...
}

有关预编译资产的详细信息,请参阅this guide

更新:如果您需要在开发环境中应用标头,则可以使用某些自定义机架中间件来执行此操作。有关示例,请参阅this gist