如何阻止通过其他网页从我的服务器下载媒体?

iovurdzv  于 2022-09-20  发布在  其他
关注(0)|答案(1)|浏览(188)

我有一个网站的图像存储在我自己的服务器上。其他一些网站在其页面上使用指向这些图像的链接,因此服务器必须处理额外的流量。我可以禁止为外部站点加载图片和其他媒体吗?或许CORS设置可以帮到我?谢谢!

5m1hhzi4

5m1hhzi41#

CORS在这方面帮不上忙,因为CORS不适用于缺少crossorigin属性的image标记。您有两个选择:

  • 跨地域资源政策,或
  • 资源隔离策略。

跨域资源策略

您可以在对资源的请求的响应中指定cross-origin resource policy (CORP)。例如,如果您指定以下响应头,

Cross-Origin-Resource-Policy: same-site

支持corp的浏览器将阻止cross-site源在其页面中嵌入您的资源。

两个注意事项:

  • Corp不会让您节省任何带宽,因为所有浏览器(无论是否支持Corp)都会先下载整个资源,然后再决定页面是否可以加载它。
  • Cross-Origin-Resource-Policy response header在不支持Corp的浏览器中不会有任何影响;这些浏览器的用户将能够加载您的资源,而不考虑页面的来源。

资源隔离策略

或者,您也可以通过Fetch Metadata request headers在服务器端实现一些资源隔离策略:
资源隔离策略可防止外部网站请求您的资源。

请注意,目前只有基于Chromium的浏览器和(more recently)Firefox的现代版本才会发送这些请求头;Safari特别不会。

然而,实施这样的资源隔离政策可能足以劝阻第三方在他们的网站上嵌入你的图像,因为他们的很大一部分访问者将无法加载你的内容。

相关问题