Apache Limit 指令被忽略,内容始终执行

Apache Limit 指令被忽略,内容始终执行

我希望用户在调用特定 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 方法上。对于所有其他方法,括号内的访问限制将不起作用。

相关内容