
Eu tenho a seguinte diretiva no meu Apache httpd.conf
:
<LimitExcept OPTIONS PROPFIND REPORT>
deny from all
</LimitExcept>
OPTIONS
e PROPFIND
funciona como esperado, mas REPORT
retorna 400: Bad Request
. Remova LimitExcept
tudo e tudo funcionará conforme o esperado.
Alguma idéia de por que isso pode acontecer?
(Por favor, vejaminha pergunta aquipara ver o que estou tentando fazer).
O log de acesso mostra:
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
O log de erros mostra:
[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
Atualizar
Ok, uma inspeção rápida revela que com ou sem o <LimitExcept>
URL REPORT
permanece o mesmo. Esta é a aparência do log sem <LimitExcept>
(todo o resto na configuração permaneceu 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
(observe que esse URL é um URL do Subversion gerado pelo comando svn log
- não sou eu quem está adicionando o !svn
URL)
O VirutalHost completo /logs/
é assim:
<Location /logs/>
DAV svn
SVNParentPath C:\SVN
<LimitExcept OPTIONS PROPFIND REPORT>
deny from all
</LimitExcept>
</Location>
Responder1
Esta é a aparência do mod_dav.c mais recente em 2.2.15 (editado por questões de brevidade):
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;
}
Então, meu instinto é que ap_xml_parse_input(r, &doc)) está saindo doc=NULL; com base em não ser capaz de acessar aquele nome de documento questionável (ele tem um! nele??) e cuspindo de volta um 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
... parece que o problema está em como o /logs/ virtual do access_log é mapeado para este diretório em error_log e se há controles de acesso adequados para permitir que os recursos sejam lidos no local. Precisamos ver todas as informações de configuração a seguir.