我发布了一个401标头和一个带有自定义值的WWW-Authenticate标头"应用程序"来自PHP。自定义值可防止浏览器加载Apache授权弹出窗口,就像WWW-Authenticate标头设置为" Basic"一样。当应用程序处理身份验证时,这是我的应用程序所需的行为。这一切都运行良好,似乎遵循401状态代码的意图,比发出403标头更好。
当我在Apache配置中已经具有Apache身份验证设置的服务器上运行此问题时出现问题.401标头导致Apache发送Apache配置中指示的WWW-Authenticate方法,而不是我发出的WWW-Authenticate标头来自PHP。因此响应标题变为" Basic"就像在Apache配置中而不是"应用程序"从我的申请发出。这导致无限的授权循环,并且Apache auth弹出窗口不断出现。
我现在解决这个问题,现在只发出一个403标题,但这样做似乎并不正确。 403表示即使用户进行身份验证,也永远不会授予请求。
我应该不使用401标头进行应用程序级登录吗?它似乎只适用于HTTP身份验证。如果没有,403真的适合这个吗?我已经遍布整个地方,无法找到明确的标准。
答案 0 :(得分:0)
unset an Apache header有一个选项(其工作方式与在PHP中设置标题不同)。
因此,您可以尝试添加.htaccess来删除PHP文件的标头。
<FilesMatch "\.(php)$">
Header unset WWW-Authenticate
</FilesMatch>