【发布时间】:2011-08-08 01:48:31
【问题描述】:
我的任务是从我们的服务器提供一个图像文件,该文件在驻留在许多其他服务器上的 html 文档中引用。也就是说:
foo.com 上的文件:<img src='http://bar.com/image.jpg'>
当用户访问 foo.com 时,它会显示来自我们服务器 bar.com 的图像。 (它实际上会根据发出请求的网站发送不同的图像。)
但问题是:他们只希望特定公司的访问者能够检索文件(当前由服务器的域名标识,但这不是必需的)。
在理想情况下,您只需查看 HTTP_REFERER,如果它在批准列表中,则提供文件。但众所周知,并非每个用户代理都提供 HTTP_REFERER,而且无论如何都可能被欺骗。
最好不必运行 javascript 或 php,但我们所追求的甚至可能在没有脚本的情况下实现吗?
如果没有,有没有办法只使用 javascript 以使其他网站无法通过欺骗方式下载文件?
如果没有,您将如何使用 PHP 来处理它?
【问题讨论】:
-
您说的是网站下载文件?文件由客户端在浏览器中下载,而不是由网站下载。每个 HTTP 请求,无论是针对页面、脚本、图像等,都是一个单独的请求,来自用户的浏览器,而不是他们正在浏览的网站。
-
仍然可以进行服务器到服务器的下载。但听起来 OP 只是想问“什么是验证下载的好方法”
-
是的,我知道用户代理会进行下载,但最终的问题是它们不能被 HTTP_REFERER 信任。我不想要经过身份验证的下载;我希望“白名单”服务器的任何公共用户都能够查看图像,但不能查看其他服务器。
标签: php javascript http http-headers http-referer