我只希望在传输具有特定值(测试)的特定标头(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 开发者控制台的响应如下:
我知道这种保护并不是真正安全的,但对于我的目的来说这已经足够了。
有人可以帮我解决这个问题吗?
答案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 之前您应该先查看该指令。