如果传输具有特定值(测试)的特定标头(身份验证令牌),我只想让我的网站可访问。为此,我已经创建了一个 .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
Run Code Online (Sandbox Code Playgroud)
这是 Chrome 开发者控制台的响应:

我知道这种保护并不真正安全,但对我而言,这已经足够了。
有人可以帮我解决这个问题吗?
如果您使用的是 apache 2.4,您应该考虑使用 new ( 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>
Run Code Online (Sandbox Code Playgroud)
该页面上还有一个使用 mod_rewrite 的示例,它与问题中的方法更相似,但是:
<If>在 2.4 中添加的指令取代了 mod_rewrite 传统上用来做的许多事情,在诉诸 mod_rewrite 之前,您可能应该先看看那里。