Назад | Перейти на главную страницу

Apache LimitExcept возвращает ошибку 400 для разрешенного метода

В моем Apache есть следующая директива httpd.conf:

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

OPTIONS и PROPFIND работать как положено, но REPORT возвращается 400: Bad Request. Удалить LimitExcept все вместе и все работает как положено.

Есть идеи, почему это может быть?

(Посмотри пожалуйста мой вопрос здесь чтобы увидеть, что я пытаюсь сделать).

Журнал доступа показывает:

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

Журнал ошибок показывает:

[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

Обновить

Хорошо, быстрый осмотр показывает, что с или без <LimitExcept> то REPORT URL остается прежним. Вот как выглядит бревно без <LimitExcept> (все остальное в конфиге осталось прежним):

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

(обратите внимание, что этот URL-адрес является URL-адресом Subversion, созданным командой svn log - Я не добавляю !svn к нему)

Полный VirutalHost для /logs/ выглядит так:

<Location /logs/>
   DAV svn
   SVNParentPath C:\SVN
   <LimitExcept OPTIONS PROPFIND REPORT>
       deny from all
   </LimitExcept>
</Location>

Вот как выглядит последний mod_dav.c в версии 2.2.15 (отредактировано для краткости):

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;
  }

Итак, мой инстинкт подсказывает, что ap_xml_parse_input (r, & doc)) оставляет doc = NULL; из-за невозможности получить доступ к этому сомнительному имени документа (в нем есть! ??) и выплевывать 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

... похоже, проблема заключается в том, как виртуальный / logs / из access_log отображается в этот каталог в error_log, и есть ли надлежащие элементы управления доступом, позволяющие читать ресурсы из этого места. Далее нам нужно увидеть всю эту информацию о конфигурации.