使用特定标头限制对 Apache 网站的访问

使用特定标头限制对 Apache 网站的访问

我只希望在传输具有特定值(测试)的特定标头(auth-token)时我的网站可访问。为此,我已经创建了一个 .htaccess 文件并在其中添加了较低的代码。

问题是,即使给出了相应的标头,该网站也根本无法访问。它还说我没有访问此服务器的权限。

Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS"

RewriteEngine on
RewriteCond %{HTTP:auth-token} ^test$
RewriteRule .? - [E=headerok]

Order allow,deny
Deny from all
Allow from env=headerok

Chrome 开发者控制台的响应如下:

Chrome 开发者控制台标题

我知道这种保护并不是真正安全的,但对于我的目的来说这已经足够了。

有人可以帮我解决这个问题吗?

答案1

如果您使用的是 apache 2.4,则应考虑使用新的 ( Require) 访问控制方法,而不是 2.0/2.2 ( Allow/ Deny) 方法。2.4 目前提供了向后兼容模块,但我预计它在某个时候会消失。

Apache 2.4 访问控制文档建议你应该能够通过以下方式实现这一点:

<If "%{HTTP:auth-token} in { 'test' }">
    Require all granted
</If>
<Else>
    Require all denied
</Else>

该页面上还有一个使用 mod_rewrite 的示例,它与问题中的方法更相似,但是:

在 2.4 版中添加的指令<If>取代了 mod_rewrite 传统上所做的许多事情,在诉诸 mod_rewrite 之前您应该先查看该指令。

相关内容