CSP:https站点上的相对img src尝试链接到http图像

时间:2018-06-29 20:18:24

标签: ruby-on-rails content-security-policy rails-activestorage

我在HTTPS上有一个站点,并且正在通过相对链接链接到图像。我正在使用Rails助手生成链接

 <%= image_tag url_for(screenshot.attachment) %>

哪个会产生类似

的图片标签
<img src="/rails/blobs/myimage.jpg"/>

尽管该网站位于HTTPS上,并且我使用的是相对路径,但出现以下CSP错误

Refused to load the image 'http://example.com/rails/blobs/myimage.jpg?content_type=image%2Fjpeg&disposition=inline%3B+filename%3D%22screenshot.jpg%22%3B+filename%2A%3DUTF-8%27%27screenshot.jpg' 
because it violates the following Content Security Policy directive: "img-src 'self' https: data:".

我不明白为什么它试图从HTTP加载图像。

2 个答案:

答案 0 :(得分:0)

在您的nginx配置中必须执行https转发。然后这个问题会解决的。

答案 1 :(得分:0)

添加only_path并将其设置为false。

url_for(screenshot.attachment, :only_path => false)

默认情况下它为false,但是可以肯定的是,将其添加到您的帮助器中,并查看其工作原理。

如果没有帮助,则可以创建完整的网址,例如

request.host + url_for(screenshot.attachment)