浏览器不会在意,但服务器可以。默认情况下,当浏览器向与包含引用页面的相同源发出请求时,它会包含一个 Referer 头,告知服务器它来自何处。服务器可以利用此信息来影响行为,包括允许或拒绝访问某些位置。
绕过这一限制很容易,但它能防止来自其他网站的随意链接。
location /uploads/ {
valid_referers www.example.com;
if ($invalid_referer) {
return 403;
}
}
将上述代码中的 www.example.com 替换为您 Discourse 实例的域名,应该是防止热链接到您实例上传文件的合适的 nginx 配置。
您可能还想采取不同于返回 403(不允许)的操作,例如重定向到您的 Discourse 主页。为此,您可以使用以下代码:
location /uploads/ {
valid_referers www.example.com;
if ($invalid_referer) {
return 307 /;
}
}
应该可以在您的 app.yml 文件中添加一些内容,以便在重建时注入该配置。至于具体如何实现,我不太确定,因为尚未深入研究过。