Apache LimitException 在允許的方法上傳回錯誤 400

Apache LimitException 在允許的方法上傳回錯誤 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

更新

好吧,快速檢查一下就會發現,無論有沒有 URL,<LimitExcept>URLREPORT都是一樣的。這是沒有日誌的樣子<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 是由命令生成的 Subversion URL svn log- 我不是!svn向其中添加 的人)

完整的 VirutalHost/logs/如下:

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

答案1

這是 2.2.15 中最新的 mod_dav.c 的樣子(為簡潔起見進行了編輯):

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

……問題似乎在於如何將 access_log 中的 virtual /logs/ 映射到 error_log 中的此目錄,以及是否有適當的存取控制來允許從該位置讀取資源。接下來我們需要查看所有設定資訊。

相關內容