Вопрос

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

GET, PROPFIND

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

PUT

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

Я реализовал следующие методы:ПАРАМЕТРЫ, PROPFIND, MKCOL, УДАЛИТЬ, ПЕРЕМЕСТИТЬ, ПОМЕСТИТЬ, ПОЛУЧИТЬ.До сих пор я тестировал Transmit и Cyberduck, и оба они отлично с этим работают.

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

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

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

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

Для OS / X вам понадобится поддержка WebDAV класса 2, которая включает блокировку и РАЗБЛОКИРОВКУ (мне было особенно сложно полностью реализовать http, если:заголовок, но для Finder вам понадобится лишь немного этого.)

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

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

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

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

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

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

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

Мы используем 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, если у вас нет фильтра.У меня есть исходный код для этого, если это необходимо.

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

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

я нашел Apache Jackrabbit хорошим подспорьем для его реализации.однако WebDAV - это серьезный P.I.T.A. для поддержки на стороне клиента.

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

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

большинство клиентов WebDAV на базе Windows предполагают, что ваш webdav-сервер / 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

Я обнаружил, что поддержка Finder WebDAV в OS X действительно привередлива.Чтобы получить поддержку чтения-записи, вы должны реализовать БЛОКИРОВКУ в дополнение к другим битам.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top