Каков ваш опыт внедрения / использования WebDAV?
Для текущего проекта Я думал о реализации WebDAV, чтобы представить виртуальное хранилище файлов, к которому клиенты могут получить доступ. До сих пор я занимался только исследованиями Google, но, похоже, мне удастся реализовать только два метода:
GET, PROPFIND
Я думаю, что это здорово. Но мне было просто любопытно. Если бы я хотел реализовать загрузку файлов через:
PUT
Я не реализовал его, но он кажется достаточно простым. Моя единственная забота - будет ли индикатор прогресса отображаться для пользователь, если он использует стандартный Vista Explorer или OSX Finder.
Я думаю, что ищу некоторые истории от людей, имеющих опыт работы с WebDAV.
8 ответов:
Для многих клиентов WebDAV и даже для доступа только для чтения вам также потребуется поддержка опций. Если вы хотите поддерживать upload, PUT явно требуется, и некоторые клиенты (MacOS X?) потребуется поддержка блокировки.
(Кстати, RFC 4918 является авторским источником информации).
Я реализовал большую часть протокола 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
Но лучший способ понять протокол-наблюдать, как клиент взаимодействует с работающим сервером. Я использовал передачу для подключения к Box.net ' S WebDAV сервер и отслеживал трафик с помощью Charles Proxy.
Немного опоздал на вечеринку, но я реализовал большую часть протокола webdav, и я могу с уверенностью сказать, что вам нужно будет реализовать большую часть протокола.
Для OS / X вам понадобится поддержка WebDAV класса 2, которая включает блокировку и разблокировку (мне было особенно трудно полностью реализовать заголовок http If:, но для Finder вам понадобится только немного этого.)
Это некоторые из моих личных выводы:
Http://sabre.io/dav/clients/windows/ http://sabre.io/dav/clients/finder/
Надеюсь, это поможет
Если вы запускаете Apache Jackrabbit под, скажем, Tomcat, он может быть настроен для предоставления WebDAV и хранения загруженных файлов. Возможно, это будет полезная модель или даже достаточно хорошая замена для запланированной реализации.
Поддержка Apache Jackrabbit для WebDAV
Кроме того, вы можете знать о клиенте BitKinex (бесплатная 30-дневная пробная версия), который я нашел полезным инструментом для тестирования сервера WebDAV.
Мы используем WebDAV внутренне, чтобы предоставить клиентам за пределами нашего брандмауэра представление некоторых общих папок на основе папок. Мы используем для этого IIS6.
В основном, это сводится к созданию виртуального каталога в IIS, который сопоставляется с каждой сетевой файловой системой, которую вы хотите сделать доступной через WebDAV. Установите его с содержимым, поступающим из "общего ресурса, расположенного на другом компьютере" - используйте UNC-путь к общему ресурсу для значения сетевого каталога. Мы включаем все опции, кроме индексирования этого ресурса. Отключите все страницы содержимого по умолчанию. Включите встроенную аутентификацию Windows (Наша также настроена с использованием SSL). У меня есть корень, настроенный для запрета доступа к анонимному и разрешения доступа к любому аутентифицированному пользователю. У нас также есть сопоставление МИМ (.* к приложению / октет-потоку). Включите расширение веб-службы WebDAV в IIS. Вам также необходимо настроить веб-сервер для делегирования разрешений всем файловым серверам, к которым вы можете получить доступ, чтобы он мог передавать учетные данные пользователя.
Если у вас есть клиенты Macintosh, вам также может понадобиться фильтр ISAPI, который сопоставляет 401-403 ошибки для клиентов Darwin. Microsoft и Apple расходятся во мнениях о том, как справиться с ситуацией, когда у вас нет разрешения на запись в каталог. Apple продолжает повторно отправлять учетные данные при ошибке 401 (отказано в доступе), переводя ее в ошибку 403 (запрещено) не дает этому произойти. По умолчанию Apple любит записывать файл "точка" в каждый каталог, к которому она обращается. Навигация по каталогам, где у вас нет доступ на запись приведет к сбою Finder, если у вас нет фильтра. У меня есть исходный код для этого, если нужно.
Это все с моей головы слетело. Это возможно (вероятно?) что я, возможно, что-то упустил. Не стесняйтесь обращаться ко мне через контактную информацию на моем веб-сайте, если у вас есть проблемы.
У нас есть сервлет webDAV на нашем веб-продукте.
Я нашел Apache Jackrabbit хорошим подспорьем для его реализации. однако webDav является серьезным P. I. T. A на стороне клиента поддержки.
Многие клиентские реализации сильно отличаются по своему поведению, и вам, скорее всего, придется поддерживать несколько различных типов подслушивающих реализаций.
Некоторые примеры: MS vista поддерживает аутентификацию только по протоколу SSL
Большинство windows - клиентов webDAV предполагают, что ваш webdav-server / let является сервером sharepoint и будет действовать соответственно (при этом не в соответствии с протоколом webDAV)
Одним из примеров этого является то, что вам нужно разрешить и неавторизованный запрос блокировки на корневом сервере (т. е. yourdomain.com/ нет yourdomain.com/where/webdav/should/live) иначе вы не сможете получить доступ к записи в MS windows. (это серьезный P. I. T. a на машине tomcat, где обычно живут ваши вещи server.com/servlets/paths/thelocation)
Большинство(все?) версии MS office по-разному реагируют на ссылки webdav.
Я думаю, что моя точка зрения заключается в том, что интеграция поддержки webdav в существующий продукт может быть намного сложнее, чем вы ожидаете. и если возможно, я бы посоветовал использовать (полу)-автономный сервер webDAV, такой как jackrabbit webdavServer, или apache mod_webdav
Я обнаружил, что поддержка OS X Finder WebDAV действительно привередлива. Чтобы получить поддержку чтения-записи, вы должны реализовать блокировку, в дополнение к другим битам.
Я написал WebDAV интерфейс к базе данных Postres, где модули python хранились в базе данных в иерархической структуре, похожей на папку. Доступ к нему с помощью cadaver работал нормально, и IIRC графический браузер windows тоже работал, но Finder отказался монтировать общий ресурс как что-либо другое, кроме только для чтения.
Итак, я не знаю, если если бы дали прогресс-бар. Файлы, с которыми я имел дело, были достаточно малы, чтобы чтение/копирование из них было практически мгновенным. Я думаю, что копия большого файла с помощью Finder, вероятно, даст индикатор выполнения - это делает для любого другого типа подключенного общего ресурса.
Вот еще один проект с открытым исходным кодом для WSGI WebDAV http://code.google.com/p/wsgidav/ где я взял проект PyFileServer.