2012-12-04 45 views
0

我发布了一个401头和一个WWW-Authenticate头,其中包含一个来自PHP的自定义值“Application”。自定义值可防止浏览器加载Apache授权弹出窗口,因为如果将WWW-Authenticate标头设置为“Basic”,就会如此。这是我的应用程序在应用程序处理身份验证时所需的行为。这一切运行良好,似乎遵循401状态码的意图,比发出403头更好。Apache Auth配置设置覆盖从PHP发出的auth头文件

当我在Apache配置中已经具有Apache auth设置的服务器上运行此问题时,会出现此问题。401标头会导致Apache发送Apache配置中指示的WWW-Authenticate方法,而不是WWW-Authenticate标头I从PHP发布。因此,响应头成为Apache配置中的“Basic”,而不是从我的应用程序发出的“Application”。这导致了无限的授权循环,并且Apache auth弹出窗口不断出现。

我对这个解决方案现在它只是发出一个403头,但它似乎并没有这样做的权利。 403表示该请求将永远不会被授予,即使用户进行身份验证。

我是不是应该使用401头进行应用程序级登录?它似乎只用于HTTP身份验证。如果没有,403是否真的适合这个?我看遍了各地,无法找到一个明确的标准。

+0

我想我试图将为http协议编写的状态代码应用到我的应用程序,并且它不会完全转换。这似乎没有任何有效的http状态码。就HTTP协议而言,我想403可能确实是正确的。 “只要你继续发出这个相同的请求,我会一直否认它。” HTTP是无状态的,并且不知道我的应用程序的登录方案。 – kirkmadera

回答

0

有一个otion到unset an Apache header(从PHP中设置标头的工作方式不同)。

所以,你可以尝试添加为.htaccess同时删除标题为PHP文件。

<FilesMatch "\.(php)$"> 
Header unset WWW-Authenticate 
</FilesMatch>