我在我的apache上有一个页面,我用Basic Auth保护它。
使用JavaScript时,我希望检查浏览器是否具有该页面的任何凭据,因此我希望使用jQuery ajax调用加载该页面,希望得到该页面或401错误。不幸的是,在后一种情况下,浏览器总是要求我提供凭据,这是我不想要的-我只想知道我是否需要凭据!
我读到过浏览器只询问是否设置了WWW-Authenticate:头,所以我想禁止它或编辑它,这样浏览器就不知道它了。
这是我的.htaccess (编辑行来自coderwall.com):
Authtype Basic
AuthName "abcdef"
AuthUserFile some/folder/at/the/xampp/.htpasswd
Require valid-user
Header always add HelloHello "Blupp"
Header always edit WWW-Authenticate ^Basic SR_Basic这是我从curl -I <url>得到的(部分)结果
HTTP/1.1 401 Unauthorized
Date: Thu, 14 Sep 2017 12:48:52 GMT
Server: Apache/2.4.17 (Win32) OpenSSL/1.0.2d PHP/5.6.21
WWW-Authenticate: Basic realm="abcdef"
Vary: accept-language,accept-charset
Accept-Ranges: bytes
Content-Type: text/html; charset=utf-8
Content-Language: en您看,WWW-Authenticate头没有被修改,HelloHello头也没有被应用!当我注释掉前4行(基本身份验证)时,我正确地得到了HelloHello: Blupp。
相反,使用行Header always unset WWW-Authenticate不会带来任何更改。
如何修改/隐藏header?
发布于 2018-01-19 21:24:33
我发现Apache2.4.25(就像Debian9中的“stretch”一样)在mod_auth_basic.c (到r->err_headers_out)中添加了"WWW-Authenticate“头,然后在mod_headers.c中处理Apache配置" header”指令,不幸的是,它操作在mod_headers.c:ap_headers_error_filter()中r->err_headers_out的另一个副本上。
当像ap_headers_output_filter()中那样向ap_headers_error_filter()添加第二个do_headers_fixup()以对r->headers_out进行操作时,问题就解决了。
不确定Apache是否将此问题视为错误或功能。
更新: apache.org的相关问题报告,包括建议的补丁程序,请访问:https://bz.apache.org/bugzilla/show_bug.cgi?id=62025
https://stackoverflow.com/questions/46220113
复制相似问题