我希望用户在调用特定 HTTP 方法时进行身份验证,而在调用其他 HTTP 方法时无需进行身份验证。我使用指令Limit
,因为它应该可以实现我想要的功能,但我无法让它工作。
SSLVerifyClient none
<Location /foo>
SSLVerifyClient none
<Limit PUT>
SSLVerifyClient require
</Limit>
</Location>
SSLVerifyClient
似乎无论我进行哪个调用(PUT、DELETE),最后一条语句总是会被执行
我也尝试过使用,LimitExcept
但是有同样的错误行为。
由于我无法在网上找到答案,我认为这是显而易见的,但我上周开始着手解决这个问题,以填补正在休假的同事的空缺。有人能帮我吗?
答案1
看起来该Limit
指令仅适用于限制访问。其中的其他指令可能根本不起作用或无法按预期工作。在您的情况下,它可能无法SSLVerifyClient
根据请求类型触发不同的值。
一种解决方法可能是创建不同的目录或别名,配置不同的SSLVerifyClient
指令值并可能处理不同的 HTTP 方法集。
http://httpd.apache.org/docs/current/mod/core.html#limit:
<Limit> 指令
描述:将封闭的访问控制限制为仅某些 HTTP 方法。
该指令的目的是将访问控制的效果限制在指定的 HTTP 方法上。对于所有其他方法,括号内的访问限制将不起作用。