热链接在本地工作,而不是在服务器中工作

hotlink working locally, not in server

我想从远程网站盗链接图片。当我在我的本地 PC(Apache 服务器)中测试时这有效,但当我从我的网站尝试时不起作用。

我不是这方面的专家,但据我了解,如果远程站点的热链接被阻止,它在我的本地服务器上应该也不起作用,对吧?在那种情况下可能是什么问题(我的托管服务提供商说他们没有任何问题)?

让我们来玩这个。

在您的本地服务器上:

  1. 您向 127.0.0.1(或 localhost)请求 returns 一些 HTML 带有盗链图片到 example.com
  2. 浏览器向 example.com 发出后续请求并将 referer header 设置为 127.0.0.1
  3. 现在 example.com 必须确定 referrer 是否允许盗链。
    因为对于那个服务器,example.com127.0.0.1 都指的是同一个东西,即服务器本身,这看起来像是一个有效的请求。

在您的远程服务器上:

同上,但将127.0.0.1替换为your.favourite.url
这次服务器验证 referrer 的时候,会得出 your.favourite.urlexample.com do not 指的是同一个东西的结论,因此屏蔽了图片请求。

这可能被视为 example.com 的错误配置,因为引荐来源网址可能无法从客户端和服务器上下文解析到同一点。

如果您通过本地网络 IP(例如 192.168.1.42)访问您的本地服务器,那么热链接应该不再有效,除非 example.com 有一个非常优雅的引荐来源策略,或者恰好使用和你一样的本地IP。

也可以通过暴力破解所有本地网络 IP 来暴露 example.com 的本地 IP,尽管从技术上讲这属于信息泄露,但您无能为力。