禁用 (Apache) OPTIONS 请求的基本身份验证

禁用 (Apache) OPTIONS 请求的基本身份验证

我在测试服务器上启用了 Apache 基本身份验证,并且运行良好:

AuthType Basic
AuthName "testing"
AuthUserFile /home/www/.htpasswd
Require user MyUser

deny from all

但它也试图验证通过 OPTIONS 方法发送的请求。这是一个问题,因为 CORS 规范规定你应该Exclude user credentials-https://www.w3.org/TR/cors/#cross-origin-request-with-preflight-0

如何禁用使用 OPTIONS 方法传入的请求的身份验证?

(与 Tomcat 类似:在 Tomcat 中禁用 OPTIONS 请求的身份验证

答案1

您或许可以使用 Apache 表达式(Apache 2.4+)仅在请求方法为以下情况时应用 HTTP Basic Auth 指令不是“选项”。

例如:

<If "%{REQUEST_METHOD} != 'OPTIONS'">
# Authentication directives...
</If>

参考:

https://httpd.apache.org/docs/2.4/expr.html

deny from all

您不需要将此(Apache 2.2)指令与基本身份验证指令一起使用。

答案2

尝试:

<RequireAny>
     Require method OPTIONS
     Require valid-user
</RequireAny>

使用 Apache 模块 mod_authz_core https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html

附言:以上适用于我

AuthName "Dostęp wymaga autoryzacji. Nieautoryzowany dostęp jest logowany"
 AuthUserFile /home/website/.htpasswd
 AuthType basic



Order Deny,Allow
 Satisfy any
 Deny from all
 Require valid-user
 // this is for use with mod_setenvif.c
 Allow from env=noauth

相关内容