Каков ваш опыт внедрения / использования WebDAV?

Для текущего проекта я думал о реализации WebDAV, чтобы представить виртуальное хранилище файлов, к которому могут обращаться клиенты. Пока я проводил исследования только в Google, но, похоже, мне удастся реализовать только два метода:

GET, PROPFIND

Я думаю, что это здорово. Мне было просто любопытно. Если бы я хотел осуществить загрузку файла через:

PUT

Я не реализовал это, но это кажется достаточно простым. Меня беспокоит только то, будет ли отображаться индикатор выполнения для пользователя, если он использует стандартный Vista Explorer или OSX Finder.

Я думаю, я ищу некоторые истории от людей, имеющих опыт работы с WebDAV.

11.12.2008 19:38:45
8 ОТВЕТОВ
РЕШЕНИЕ

Для многих клиентов WebDAV и даже для доступа только для чтения вам также потребуется поддержка OPTIONS. Если вы хотите поддерживать загрузку, очевидно, что требуется PUT, а некоторым клиентам (MacOS X?) Потребуется поддержка блокировки.

(кстати, RFC 4918 является авторским источником информации).

7
17.01.2009 11:29:02

Если вы запускаете Apache Jackrabbit, скажем, под Tomcat, его можно настроить так, чтобы он предлагал WebDAV и сохранял загруженные файлы. Возможно, это будет полезной моделью или даже достаточно хорошей заменой запланированной реализации.

Поддержка Apache Jackrabbit для WebDAV

Также вам может потребоваться информация о клиенте BitKinex (бесплатная 30-дневная пробная версия), который, как я обнаружил, является полезным инструментом для тестирования сервера WebDAV.

Домашняя страница BitKinex

2
11.12.2008 19:48:58

Мы используем WebDAV для внутренних целей, чтобы обеспечить просмотр некоторых общих файловых папок для клиентов вне нашего брандмауэра. Мы используем IIS6 для этого.

По сути, это сводится к созданию виртуального каталога в IIS, который сопоставляется с каждой сетевой файловой системой, которую вы хотите сделать доступной через WebDAV. Настройте его с помощью содержимого «Общая папка, расположенная на другом компьютере» - используйте UNC-путь к общей папке для значения «Сетевой каталог». Мы включаем все параметры, кроме индексации этого ресурса. Отключить все страницы содержимого по умолчанию. Включите встроенную аутентификацию Windows (наша также настраивается с использованием SSL). У меня есть root, настроенный для запрета доступа анонимным пользователям и разрешения доступа любому аутентифицированному пользователю. У нас также есть подстановочный знак MIME (. * Для application / octet-stream). Включите расширение веб-службы WebDAV в IIS. Вам также необходимо настроить веб-сервер для делегирования разрешений всем файловым серверам, к которым вы можете обращаться, чтобы он мог передавать учетные данные пользователя.

Если у вас есть клиенты Macintosh, вам также может понадобиться фильтр ISAPI, который отображает ошибки 401–403 для клиентов Darwin. Microsoft и Apple не согласны с тем, как справиться с ситуацией, когда у вас нет разрешения на запись в каталог. Apple продолжает повторную отправку учетных данных при ошибке 401 (доступ запрещен), переводя ее в ошибку 403 (запрещено), чтобы это не происходило. По умолчанию Apple любит записывать «точечный» файл в каждый каталог, к которому он обращается. Навигация по каталогам, где у вас нет прав на запись, приведет к сбою в Finder, если у вас нет фильтра. У меня есть исходный код для этого, если это необходимо.

Это все с моей головы. Возможно (вероятно?), Что я, возможно, что-то пропустил. Не стесняйтесь связаться со мной через контактную информацию на моем веб-сайте, если у вас есть проблемы.

2
11.12.2008 19:56:03

Я нашел поддержку OS X Finder WebDAV очень привередливой. Чтобы получить поддержку чтения-записи, вы должны реализовать LOCK в дополнение к другим битам.

Я написал интерфейс WebDAV для базы данных Postres, где модули Python хранятся в базе данных в иерархической структуре, похожей на папку. Доступ к нему с помощью cadaver работал нормально, и IIRC также работал с Windows GUI-браузером, но Finder отказывался монтировать общий ресурс как что-либо кроме чтения.

Итак, я не знаю, если бы дал индикатор прогресса. Файлы, с которыми я имел дело, были достаточно маленькими, поэтому чтение / копирование с них происходило практически мгновенно. Я думаю, что копия большого файла с использованием Finder, вероятно, даст индикатор выполнения - это подходит для любого другого типа подключенного общего ресурса.

1
12.12.2008 01:33:25

В нашем веб-продукте есть сервлет webDAV.

Я нашел Apache Jackrabbit хорошую помощь для его реализации. однако webDav - это серьезная PITA на стороне клиента.

Многие клиентские реализации сильно различаются по своему поведению, и вам, скорее всего, придется поддерживать несколько различных типов ошибочных реализаций.

некоторые примеры: MS Vista поддерживает только аутентификацию по SSL

большинство клиентов webDAV на базе Windows предполагают, что ваш webdav-сервер / let является сервером sharepoint и будет действовать соответствующим образом (таким образом, не в соответствии с протоколом webDAV)

Одним из примеров этого является то, что вам НЕОБХОДИМО разрешить и неаутентифицированный запрос LOCK в корне вашего сервера (т.е. yourdomain.com/ not yourdomain.com/where/webdav/should/live), иначе вы не сможете получить доступ для записи в MS окна. (это серьезная PITA на компьютере-кошке, где ваши вещи обычно живут на server.com/servlets/paths/thelocation)

большинство (все?) версии MS Office по-разному реагируют на ссылки на webdav.

Я предполагаю, что моя точка зрения заключается в том, что интеграция поддержки webdav в существующий продукт может быть намного сложнее, чем вы ожидаете. и, если возможно, я бы посоветовал использовать (полу) -стандартный сервер webDAV, такой как jackrabbit webdavServer или apache mod_webdav

2
10.02.2009 11:42:07
«MS Vista поддерживает только аутентификацию по SSL» - Vista поддерживает DIGEST и BASIC аутентификацию по SSL и DIGEST по обычному соединению. Есть реестр, который должен включить BASIC-аутентификацию при обычном соединении, но у меня это не сработало :-(
Peter Štibraný 17.03.2009 11:28:31

Немного опоздал на вечеринку, но я реализовал большую часть протокола webdav, и я могу с уверенностью сказать, что вам потребуется реализовать большую часть протокола.

Для OS / X вам понадобится поддержка WebDAV класса 2, которая включает в себя LOCK и UNLOCK (мне было особенно трудно полностью реализовать заголовок http If:, но для Finder вам понадобится только немного этого).

Вот некоторые из моих личных находок:

http://sabre.io/dav/clients/windows/ http://sabre.io/dav/clients/finder/

Надеюсь это поможет

5
4.10.2014 23:54:23

Вот еще один проект с открытым исходным кодом для WSGI WebDAV http://code.google.com/p/wsgidav/, где я взял проект PyFileServer.

0
14.07.2009 16:09:43

Я реализовал большую часть протокола WebDAV примерно за день работы: http://github.com/nfarina/simpledav

Я написал его на Python для запуска на Google App Engine, и я ожидаю, что любой другой язык будет похожим усилием. В целом, это около двух страниц кода.

Я реализовал следующие методы: OPTIONS, PROPFIND, MKCOL, DELETE, MOVE, PUT, GET. До сих пор я тестировал Transmit и Cyberduck, и оба прекрасно с ним работают.

Надеемся, что это может дать некоторые рекомендации для следующего человека, заинтересованного в реализации сервера WebDAV. Это не сложный протокол, он очень плотный с абстрагированным языком, таким как «глубина», «коллекции» и тому подобное.

Вот спецификация: http://www.webdav.org/specs/rfc4918.html

Но лучший способ понять протокол - это наблюдать за клиентом, взаимодействующим с работающим сервером. Я использовал Transmit для подключения к серверу Box.net WebDAV и отслеживал трафик с помощью Charles Proxy.

7
23.09.2010 19:43:11