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

Posted

技术标签:

【中文标题】如何阻止其他网页从我的服务器下载媒体?【英文标题】:How can one block downloading media from my server by other web-pages? 【发布时间】:2021-12-30 23:53:02 【问题描述】:

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

【问题讨论】:

【参考方案1】:

CORS 无法帮助您,因为 CORS 不适用于图像资源。你有两个选择:

跨域资源策略,或 资源隔离策略。

跨域资源策略

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

Cross-Origin-Resource-Policy: same-site

browsers that support CORP 将阻止 cross-site 来源将您的资源嵌入到他们的页面中。

两个警告:

CORP 不会让您节省任何带宽,因为所有浏览器(无论是否支持 CORP)都会先下载整个资源,然后再决定页面是否可以加载。 Cross-Origin-Resource-Policy response header 不会对browsers that don't support CORP 产生任何影响;无论页面的来源如何,这些浏览器的用户都可以加载您的资源。

资源隔离政策

或者,您可以通过Fetch Metadata request headers在服务器端实现一些resource isolation policy:

资源隔离政策可防止外部网站请求您的资源。

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

但是,实施此类资源隔离政策可能足以阻止第三方将您的图片嵌入他们的网站,因为他们的大部分访问者将无法加载您的内容。

【讨论】:

以上是关于如何阻止其他网页从我的服务器下载媒体?的主要内容,如果未能解决你的问题,请参考以下文章

如何阻止从我的网站下载视频

阻止人们从我的域名中获取我的 ip。? [关闭]

Jquery mobile 阻止从我的基于 django 的站点下载

流媒体视频如何工作?

如何只允许 PHP 从我的服务器下载图像?

如何在社交媒体应用中阻止 Firebase 上的用户?对于 iOS