Apache LimitExcept retornando o erro 400 no método permitido

2

Eu tenho a seguinte diretiva no meu Apache httpd.conf :

<LimitExcept OPTIONS PROPFIND REPORT>
   deny from all
</LimitExcept>

OPTIONS e PROPFIND funcionam como esperado, mas REPORT retorna 400: Bad Request . Remova o LimitExcept alltogether e tudo funciona como esperado.

Alguma idéia de por que isso pode ser?

(Por favor, veja minha pergunta aqui para 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 a URL <LimitExcept> a REPORT permanece a mesma. Isto é o que o log parece sem o <LimitExcept> (tudo o resto na configuração permaneceu o mesmo):

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

(note que essa URL é uma URL do Subversion conforme gerada pelo comando svn log - não sou eu que adiciono o !svn a ela)

O VirutalHost completo para /logs/ é assim:

<Location /logs/>
   DAV svn
   SVNParentPath C:\SVN
   <LimitExcept OPTIONS PROPFIND REPORT>
       deny from all
   </LimitExcept>
</Location>
    
por Mark Henderson 18.06.2010 / 04:40

1 resposta

3

Isto é o que o mod_dav.c mais recente se parece em 2.2.15 (editado por 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á deixando doc = NULL; baseado em não ser capaz de acessar o nome do documento questionável (ele tem um! in it ??) e cuspindo 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 virtual / logs / do access_log é mapeado para esse diretório no error_log, e se há controles de acesso apropriados para permitir que os recursos sejam lidos do local. Precisamos ver todas essas informações de configuração em seguida.

    
por 22.06.2010 / 12:26