
Tengo la siguiente directiva en mi Apache httpd.conf
:
<LimitExcept OPTIONS PROPFIND REPORT>
deny from all
</LimitExcept>
OPTIONS
y PROPFIND
funciona como se esperaba, pero REPORT
regresa 400: Bad Request
. Retire LimitExcept
todo y todo funcionará como se esperaba.
¿Alguna idea de por qué podría ser esto?
(Por favor mirami pregunta aquípara ver lo que estoy intentando hacer).
El registro de acceso muestra:
192.168.161.1 - - [21/Jun/2010:08:42:26 +1000] "REPORT /logs/MV101Apps/!svn/bc/7699/MyApp/MyApps.edp HTTP/1.1" 400 101
El registro de errores muestra:
[Mon Jun 21 08:42:26 2010] [error] [client 192.168.161.1] client denied by server configuration: C:/Program Files/CollabNet/Subversion Server/httpd/htdocs/logs
Actualizar
Bien, una inspección rápida revela que con o sin la <LimitExcept>
URL REPORT
permanece igual. Así es como se ve el registro sin <LimitExcept>
(todo lo demás en la configuración permaneció igual):
192.168.161.1 - - [22/Jun/2010:21:03:42 +1000] "REPORT /logs/MV101Apps/!svn/bc/7821/MyApp/MyApps.edp HTTP/1.1" 200 115
(tenga en cuenta que esa URL es una URL de Subversion generada por el comando svn log
; no soy yo quien !svn
le agrega)
El VirutalHost completo /logs/
se ve así:
<Location /logs/>
DAV svn
SVNParentPath C:\SVN
<LimitExcept OPTIONS PROPFIND REPORT>
deny from all
</LimitExcept>
</Location>
Respuesta1
Así es como se ve el último mod_dav.c en 2.2.15 (editado por brevedad):
static int dav_method_report(request_rec *r)
{
int result;
apr_xml_doc *doc;
if ((result = ap_xml_parse_input(r, &doc)) != OK)
return result;
if (doc == NULL) {
return HTTP_BAD_REQUEST;
}
Entonces, mi instinto es que ap_xml_parse_input(r, &doc)) está dejando doc=NULL; basado en no poder acceder a ese nombre de documento cuestionable (¿tiene un! En él?) y escupir un 400:
"REPORT /logs/MV101Apps/!svn/bc/7699/MyApp/MyApps.edp HTTP/1.1"
...
client denied by server configuration: C:/Program Files/CollabNet/Subversion Server/httpd/htdocs/logs
... huele a que el problema radica en cómo el /logs/ virtual del access_log se asigna a este directorio en error_log, y si existen controles de acceso adecuados para permitir que los recursos se lean desde la ubicación. Necesitamos ver toda esa información de configuración a continuación.