在我的网络服务器上,我有一个图像文件夹,我想保护它不被直接链接。我知道有几种方法可以做到这一点,但我也想在.htaccess
中设置两个RewriteCond来做到这一点:
- 如果request_URI包含单词“output”(这是imagefolder),则标准React将是阻止此请求
除非: - 用户根据请求发送一个名为“testeader”的头,该头可以为空
这样一来,除非发送标题,否则试图直接链接或下载的人会得到一个错误。我知道这很容易做到,这只是创造了另一个需要克服的障碍。
我的.htaccess
看起来像这样:
RewriteCond "%{REQUEST_URI}" ".*output.*"
RewriteCond "{%HTTP:testheader}" "!^$"
RewriteRule ^ - [F]
我不知道为什么这个方法不起作用。如果我只使用第一个RewriteCond,并注解掉第二个,它就起作用了。
为了测试它是否工作,我通过JavaScript中的xhr请求加载图像。
var xhr = new XMLHttpRequest();
xhr.responseType = 'blob'; //so you can access the response like a normal URL
xhr.onreadystatechange = function () {
if (xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) {
var img = document.createElement('img');
img.src = URL.createObjectURL(xhr.response); //create <img> with src set to the blob
document.body.appendChild(img);
}
};
xhr.open('GET', 'https://www.example.com/output/test.png', true);
xhr.setRequestHeader('testheader', '');
xhr.send();
1条答案
按热度按时间igetnqfo1#
将包含以下内容的
.htaccess
放在/output/
目录中,就可以完成我想做的事情。现在我还测试了头的内容是否包含字符串'tst':