Server 基于主机或域的白名单api端点

Server 基于主机或域的白名单api端点,server,Server,我正在构建一个返回图像的端点。我希望只允许来自同一域的请求用于此端点,以便其他人无法访问它。我不能使用CORS,因为你基本上可以在图像标签中进行调用,并绕过任何CORS限制。还有其他办法吗?如果你的目标是防止简单的热链接,你可以做一个推荐人检查:检查Referer[sic!]标题,确保它包含一个白名单域 请记住,Referer标题有时会丢失,例如,因为出于对用户隐私的考虑,安全软件已将其删除 此外,不必说,任何决心滥用您的服务的人都很容易规避基于推荐人的检查 虽然您不能(据我所知)在浏览器请求中

我正在构建一个返回图像的端点。我希望只允许来自同一域的请求用于此端点,以便其他人无法访问它。我不能使用CORS,因为你基本上可以在图像标签中进行调用,并绕过任何CORS限制。还有其他办法吗?

如果你的目标是防止简单的热链接,你可以做一个推荐人检查:检查
Referer
[sic!]标题,确保它包含一个白名单域

请记住,
Referer
标题有时会丢失,例如,因为出于对用户隐私的考虑,安全软件已将其删除

此外,不必说,任何决心滥用您的服务的人都很容易规避基于推荐人的检查

虽然您不能(据我所知)在浏览器请求中伪造参考者(例如,使用AJAX下载图像),但您可以简单地设置一个代理服务器,该服务器将下载带有伪造参考者标头的图像,并将其交付给实际的客户机


但是,这样做至少需要一些精力,而且你可以很容易地通过IP地址阻止这样一个服务器(除非它是一个IP地址池)。

如果你的目标是防止简单的热链接,你可以做一个推荐人检查:检查
推荐人
[sic!]头,确保它包含一个白名单域

请记住,
Referer
标题有时会丢失,例如,因为出于对用户隐私的考虑,安全软件已将其删除

此外,不必说,任何决心滥用您的服务的人都很容易规避基于推荐人的检查

虽然您不能(据我所知)在浏览器请求中伪造参考者(例如,使用AJAX下载图像),但您可以简单地设置一个代理服务器,该服务器将下载带有伪造参考者标头的图像,并将其交付给实际的客户机

但是,至少,这样做需要一些精力,而且您可以很容易地通过IP地址阻止这样一个服务器(除非它是一个IP地址池)