Я реализую сервер WebDAV, но у меня проблема с предлагаемым клиентом (проводник Windows 7). В окнах я просматривающие к \ сервер \ Public \ контейнер, который мой сервер хочет представить как папку, содержащую два файла, так я получаю следующий запрос:Мой ответ WEBDAV PROPFIND не принят проводником Windows
PROPFIND /public/container HTTP/1.1
Connection: Keep-Alive
User-Agent: Microsoft-WebDAV-MiniRedir/6.1.7601
Depth: 1
translate: f
Content-Length: 0
Host: devsys:4511
Мой ответ:
HTTP/1.1 207 Multi-Status
Server: MyServer 2.12
Date: Mon, 08 Sep 14 17:57:50 -0000
Host: server.somewhere.com
Content-Type: text/xml; charset="utf-8"
Content-Length: 2901
<d:multistatus xmlns:d="DAV:">
<d:response>
<d:href>/public/container</d:href>
<d:propstat>
<d:prop>
<d:creationdate>2014-09-05T19:00:00Z</d:creationdate>
<d:displayname>container</d:displayname>
<d:resourcetype>
<d:collection/>
</d:resourcetype>
<d:supportedlock>
<d:lockentry>
<d:lockscope>
<d:exclusive/>
</d:lockscope>
<d:locktype>
<d:write/>
</d:locktype>
</d:lockentry>
<d:lockentry>
<d:lockscope>
<d:shared/>
</d:lockscope>
<d:locktype>
<d:write/>
</d:locktype>
</d:lockentry>
</d:supportedlock>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
</d:response>
<d:response>
<d:href>/public/container/myFile1</d:href>
<d:propstat>
<d:prop>
<d:getcontenttype>text/plain</d:getcontenttype>
<d:getcontentlength>375</d:getcontentlength>
<d:getetag>"1410198520"</d:getetag>
<d:creationdate>2014-09-05T19:00:00Z</d:creationdate>
<d:displayname>myFile1</d:displayname>
<d:getlastmodified>05 Sep 2014 19:00:00 GMT</d:getlastmodified>
<d:resourcetype/>
<d:supportedlock>
<d:lockentry>
<d:lockscope>
<d:exclusive/>
</d:lockscope>
<d:locktype>
<d:write/>
</d:locktype>
</d:lockentry>
<d:lockentry>
<d:lockscope>
<d:shared/>
</d:lockscope>
<d:locktype>
<d:write/>
</d:locktype>
</d:lockentry>
</d:supportedlock>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
</d:response>
<d:response>
<d:href>/public/container/myFile2</d:href>
<d:propstat>
<d:prop>
<d:getcontenttype>text/plain</d:getcontenttype>
<d:getcontentlength>375</d:getcontentlength>
<d:getetag>"1410198523"</d:getetag>
<d:creationdate>2014-09-05T19:00:00Z</d:creationdate>
<d:displayname>myFile2</d:displayname>
<d:getlastmodified>05 Sep 2014 19:00:00 GMT</d:getlastmodified>
<d:resourcetype/>
<d:supportedlock>
<d:lockentry>
<d:lockscope>
<d:exclusive/>
</d:lockscope>
<d:locktype>
<d:write/>
</d:locktype>
</d:lockentry>
<d:lockentry>
<d:lockscope>
<d:shared/>
</d:lockscope>
<d:locktype>
<d:write/>
</d:locktype>
</d:lockentry>
</d:supportedlock>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
</d:response>
</d:multistatus>
Windows любезно предоставит ошибку \ myserver \ public \ container не доступный. Возможно, у вас нет разрешения на использование этой сети ресурса. Обратитесь к администратору сервера, чтобы узнать, имеете ли вы права доступа . Параметр неверный.
Это не похоже, какой параметр он может быть, и почему он неверен. Может ли кто-нибудь заметить вопиющую ошибку? Я пропустил свойство, которое требуется Windows, или я просто сделал что-то неправильно?
Сервер находится на C, поэтому у меня есть контроль уровня байта над ответом.
Спасибо - Рог
Синтаксис d: getetag сломан (отсутствует процитированный), но я сомневаюсь, что это проблема. –
Будучи новичком в etags, я пропустил немного о цитировании, но я изменил это и не пошел ... Спасибо, что нашел его! – Thickycat