问题原因是由于webkit默认了安全策略,不允许跨域访问图片。如果图片资源和服务器不在同一个域名下,就会被拒绝访问,导致activestorage的image_tag显示缺失的图片。
要解决此问题,我们需要在应用程序的Rails配置文件中添加以下代码:
config.action_dispatch.default_headers = {
'Referrer-Policy' => 'no-referrer',
'X-Content-Type-Options' => 'nosniff'
}
这里的Referrer-Policy用于设置引用页策略,我们将其设置为no-referrer,即禁用引用页信息,避免泄露信息,而X-Content-Type-Options则设置nosniff,即防止浏览器将响应内容的MIME类型修改成与服务器端指定的 MIME 类型不一致。这样可以有效地避免跨域资源不能被webkit加载。
在完成配置后,我们需要重启服务器,使其生效。
rails s
以上是解决activestorage image_tag显示缺失的图片问题的方法。