Ruby on rails Rails:排除从CDN链接的图像

Ruby on rails Rails:排除从CDN链接的图像,ruby-on-rails,carrierwave,amazon-cloudfront,Ruby On Rails,Carrierwave,Amazon Cloudfront,我为js、css和静态图像工作CDN资产托管。但我想从CDN中排除动态生成的图像(使用send_file),并希望浏览器直接转到我的应用程序URL以获取此类图像 i、 去 但send_文件URL的输出为 原因是存在图像#视图的控制器需要授权,并且由于某些原因,cookie无法返回到应用服务器。因此,即使在中间,我想使用 CDN 作为动态生成的图像的中继,但它不允许控制器授权(使用CANCAN/AUTE设计) 在production.rb中,我有: config.action\u controll

我为
js
css
静态图像工作
CDN
资产托管。但我想从
CDN
中排除动态生成的图像(使用
send_file
),并希望浏览器直接转到我的应用程序URL以获取此类图像

i、 去

但send_文件URL的输出为

原因是存在图像#视图的控制器需要授权,并且由于某些原因,cookie无法返回到应用服务器。因此,即使在中间,我想使用<代码> CDN <代码>作为动态生成的图像的中继,但它不允许控制器授权(使用CANCAN/AUTE设计)

在production.rb中,我有:

config.action\u controller.asset\u host=”http://cdn.myapp.com/“

我在载波配置中尝试了以下操作,但无效:

config.asset\u主机=”http://www.myapp.com/“


如何通过CDN排除某些路由?

解决方案是在
production.rb
文件中设置条件,该文件根据URL模式设置资产主机。在我的例子中,我希望用户照片中的任何内容都可以从不同于所有其他静态资产的资产主机提供:

config.action_controller.asset_host = Proc.new { |source|
  case source
  when /\/user_photos\//
    APP_CONFIG['dynamic_photos_root_url']
  else
    APP_CONFIG['asset_cdn']
end
}
载波配置更改没有任何作用,所以我最终删除了它们

CDN是Amazon的cloudfront,他们对cookies做了一些奇怪的事情,我甚至在设置CDN的行为以通过所有cookies时都不理解这些事情

以下讨论是找出解决方案的关键:


我想知道是否有办法让Amazon cloudfront在缓存此图像的地方工作,并且在同一用户后续点击时,它会将cookie传递到源站,获得身份验证,然后将相同的缓存图像提供给浏览器。

奇怪,它应该是开箱即用的,奇怪的是,请尝试覆盖
url
方法