【发布时间】:2020-10-26 01:28:53
【问题描述】:
我有一个图片文件夹,例如
- www.domain.com/images/1.jpg
- www.domain.com/images/2.jpg
- www.domain.com/images/3.jpg
我想在 AJAX 请求时显示图像,否则请避免直接访问(浏览器地址栏)。 这个场景如何实现?
更新 以一种简单的方式,我希望在我的网站上请求时显示图像,无论是 AJAX 还是任何其他请求。但如果之前没有请求,要避免直接访问图像。例如,我有一个图像“domain.com/images/myimage.jpg”。所以在访问者通过我的网站前端请求之前,该图像不应直接访问(浏览器地址栏)。
请注意:已经检查了其中一些类型的真实示例。我知道他们的图片名称,但是当我将链接放在地址栏上时,它会显示Access Denied,直到我从他们的网站请求,并且他们正在使用 AJAX 请求。
【问题讨论】:
-
Ajax 请求从不显示图像,它们只能检索图像数据或图像 url。如果他们返回和图像 url,则浏览器必须向该 url 发出请求以显示您不想要的内容。我能想到的唯一可行的方法是拒绝通过 htaccess 或类似方法访问所有图像文件,然后在您的 php 中,获取文件内容并将它们作为 base64 编码字符串返回到 ajax 并让前端使用那个。
-
正如 hardillb 下面提到的,您可以通过某些标头过滤请求,但请注意,这种方法很容易被绕过。
-
而且任何选项都不会被视为“保护”图像,因为一旦您展示它,它的游戏就结束了。
-
以一种简单的方式,我希望在我的网站上请求时显示图像,无论是 AJAX 还是任何其他请求。但如果之前没有请求,要避免直接访问图像。例如,我有一个图像“domain.com/images/myimage.jpg”。因此,在访问者通过我的网站前端请求之前,该图像不应直接访问(浏览器地址栏)。