"You need to give a SHA parameter" 通过 Cloudfront 提供 Dragonfly 图像时出错
"You need to give a SHA parameter" error when serving Dragonfly images through Cloudfront
我已经使用 dragonfly gem 在我的 Rails 应用程序中成功安装并上传了图片。如果我直接通过应用程序加载图片,加载图片效果很好。但是,如果我通过 Cloudfront 加载图像,我会收到一个错误页面,上面写着 "You need to give a SHA parameter" 这很奇怪,因为 SHA 已经包含在 URL 中:
对于上下文,这是我的蜻蜓设置:
# config/initializers/dragonfly.rb
require 'dragonfly'
# Configure
Dragonfly.app.configure do
plugin :imagemagick
secret "randomsecret"
url_format "/media/:job/:name"
datastore :file,
root_path: Rails.root.join('public/system/dragonfly', Rails.env),
server_root: Rails.root.join('public')
end
# Logger
Dragonfly.logger = Rails.logger
# Mount as middleware
Rails.application.middleware.use Dragonfly::Middleware
# Add model functionality
if defined?(ActiveRecord::Base)
ActiveRecord::Base.extend Dragonfly::Model
ActiveRecord::Base.extend Dragonfly::Model::Validations
end
我已经阅读了 CDN section in the documentation of dragonfly,但它没有解决问题。它唯一的区别是它在调用 image.url
时包含 url_host
而不是通常 returns.
的相对路径
默认情况下,CloudFront 不会将查询字符串转发到源。您是否已确认已启用 query string 转发?
我已经使用 dragonfly gem 在我的 Rails 应用程序中成功安装并上传了图片。如果我直接通过应用程序加载图片,加载图片效果很好。但是,如果我通过 Cloudfront 加载图像,我会收到一个错误页面,上面写着 "You need to give a SHA parameter" 这很奇怪,因为 SHA 已经包含在 URL 中:
对于上下文,这是我的蜻蜓设置:
# config/initializers/dragonfly.rb
require 'dragonfly'
# Configure
Dragonfly.app.configure do
plugin :imagemagick
secret "randomsecret"
url_format "/media/:job/:name"
datastore :file,
root_path: Rails.root.join('public/system/dragonfly', Rails.env),
server_root: Rails.root.join('public')
end
# Logger
Dragonfly.logger = Rails.logger
# Mount as middleware
Rails.application.middleware.use Dragonfly::Middleware
# Add model functionality
if defined?(ActiveRecord::Base)
ActiveRecord::Base.extend Dragonfly::Model
ActiveRecord::Base.extend Dragonfly::Model::Validations
end
我已经阅读了 CDN section in the documentation of dragonfly,但它没有解决问题。它唯一的区别是它在调用 image.url
时包含 url_host
而不是通常 returns.
默认情况下,CloudFront 不会将查询字符串转发到源。您是否已确认已启用 query string 转发?