2008-12-11 25 views
6

Para un proyecto actual, estaba pensando en implementar WebDAV para presentar una tienda virtual de archivos a la que los clientes pueden acceder. Sólo he hecho investigación de Google hasta ahora, pero parece que puedo salir con la única aplicación de dos métodos:¿Cuáles son sus experiencias implementando/usando WebDAV?

GET, PROPFIND 

creo que esto es muy bueno. Sin embargo, solo tenía curiosidad. Si quería aplicar la carga de archivos a través de:

PUT 

no he puesto en práctica, pero parece bastante simple. Mi única preocupación es si se mostrará un medidor de progreso para el usuario si está usando Vista Explorer estándar o OSX Finder.

Supongo que estoy buscando algunas historias de personas con experiencia en WebDAV.

Respuesta

7

Para muchos clientes WebDAV e incluso para acceso de solo lectura, también deberá admitir OPCIONES. Si desea admitir la carga, obviamente se requiere PUT, y algunos clientes (¿MacOS X?) Necesitarán soporte de bloqueo.

(por cierto, RFC 4918 es la fuente de información autorizada).

2

Si ejecuta Apache Jackrabbit en, digamos, Tomcat, se puede configurar para ofrecer WebDAV y almacenar archivos cargados. Tal vez sea un modelo útil, o incluso un reemplazo suficientemente bueno para la implementación planificada.

Apache Jackrabbit Support for WebDAV

Además, es posible que desee tener en cuenta del cliente BitKinex (gratuita de 30 días de prueba), que he encontrado para ser una herramienta útil para probar un servidor WebDAV.

BitKinex Home Page

2

Utilizamos WebDAV internamente para proporcionar una visión basada en carpetas de algunos archivos compartidos a clientes fuera de nuestro servidor de seguridad. Estamos usando IIS6 para esto.

Básicamente, todo se reduce a la creación de un directorio virtual en IIS que se asigna a cada sistema de archivos de red que desea poner a disposición a través de WebDAV. Configúrelo con el contenido proveniente de "Un recurso compartido ubicado en otra computadora": utilice la ruta de acceso UNC al recurso compartido para el valor del Directorio de red. Activamos todas las opciones excepto Indexar este recurso. Deshabilita todas las páginas de contenido predeterminado. Active la Autenticación integrada de Windows (la nuestra también está configurada con SSL). Tengo la raíz configurada para denegar el acceso a anónimo y permitir el acceso a cualquier usuario autenticado. También tenemos un mapeo MIME comodín (. * A application/octet-stream). Habilite la extensión del servicio web WebDAV en IIS. También necesita configurar el servidor web para delegar permisos a todos los servidores de archivos a los que puede acceder, de modo que pueda transmitir las credenciales del usuario.

Si tiene clientes Macintosh, es posible que también necesite un filtro ISAPI que correlacione los errores 401 a 403 para los clientes de Darwin. Microsoft y Apple no están de acuerdo sobre cómo manejar la situación cuando no tienes permiso para escribir en un directorio. Apple sigue reenviando las credenciales en un error 401 (Acceso denegado), al traducirlo a un error 403 (Prohibido) evita que esto suceda. Por defecto, a Apple le gusta escribir un archivo "punto" en cada directorio al que accede. Navegando a través de directorios donde no tiene acceso de escritura terminará colgando el Finder si no tiene el filtro. Tengo un código fuente para esto si es necesario.

Esto es todo de la parte superior de mi cabeza. Es posible (¿probable?) Que me haya perdido algo. No dude en ponerse en contacto conmigo a través de la información de contacto en mi sitio web si tiene problemas.

1

He encontrado que el soporte de Finder WebDAV de OS X es realmente quisquilloso. Para obtener soporte de lectura-escritura, debe implementar LOCK, además de otros bits.

Escribí una interfaz WebDAV a una base de datos de Postres, donde los módulos de python se almacenaban en la base de datos en una estructura jerárquica tipo carpeta. Acceder a él con cadáver funcionó bien, y el navegador de ventanas III de IIRC funcionó también, pero Finder se negó a montar el recurso compartido como algo más que de solo lectura.

Por lo tanto, no sé si daría una barra de progreso. Los archivos con los que estaba tratando eran lo suficientemente pequeños como para que una lectura/copia de ellos fuera prácticamente instantánea. Creo que una copia de un archivo grande usando Finder probablemente proporcione una barra de progreso, lo mismo ocurre con cualquier otro tipo de recurso compartido montado.

2

Tenemos un servlet webDAV en nuestro producto basado en web.

He encontrado Apache Jackrabbit una buena ayuda para implementarlo. sin embargo, webDav es una P.I.T.A grave en el soporte del lado del cliente.

muchas implementaciones de clientes difieren ampliamente en su comportamiento y es probable que deba soportar varios tipos diferentes de implementaciones con errores.

algunos ejemplos: MS Vista sólo admite la autenticación a través de SSL

mayoría de las ventanas cliente WebDAV basadas asuma que su webdav-servidor/let es un servidor de SharePoint y actuará en consecuencia (por lo tanto no de acuerdo con el protocolo WebDAV)

un ejemplo de esto es que NECESITA permitir y la solicitud de BLOQUEO no autenticado en la raíz de su servidor (es decir, sudominio.com/ no sudominio.com/adónde/webdav/should/live) de lo contrario no podrá obtener acceso de escritura en MS windows. (esto es un grave P.I.T.A en una máquina de Tomcat donde su materia usualy vive en server.com/servlets/paths/thelocation)

la mayoría (todos?) Versiones de MS Office responder a diferentes enlaces WebDAV.

Supongo que mi punto es integrar el soporte webdav en un producto existente puede ser mucho más difícil de lo esperado. y si es posible, aconsejaría usar un servidor webDAV (semi) -standalone como jackrabbit webdavServer, o apache mod_webdav

+0

"MS vista solo admite la autenticación a través de SSL": Vista admite autenticación DIGEST y BASIC sobre SSL y DIGEST sobre conexión normal. Hay un registro que se supone que activa autenticación básica en conexión simple, pero no funcionó para mí :-( –

5

Me llego tarde a la fiesta, pero he implementado la mayor parte del protocolo webdav y puedo decir con confianza tendrás que implementar la mayor parte del protocolo.

Para OS/X necesitarás soporte WebDAV de clase 2, que incluye LOCK y UNLOCK (Me pareció particularmente difícil implementar completamente el encabezado http If: pero para Finder solo necesitarás un poco de eso .)

Estas son algunas de mis conclusiones personales:

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

espero que esto ayude

7

he implementado la mayor parte del protocolo WebDAV en el trabajo de un día de: http://github.com/nfarina/simpledav

lo he escrito en Python para ejecutar en Google App Engine, y espero que cualquier otro idioma sería un esfuerzo similar. En general, se trata de dos páginas de código.

Implementé los siguientes métodos: OPTIONS, PROPFIND, MKCOL, DELETE, MOVE, PUT, GET. Hasta ahora he probado Transmit y Cyberduck y ambos funcionan muy bien con él.

Afortunadamente, esto puede proporcionar una guía para la próxima persona interesada en implementar un servidor WebDAV. No es un protocolo difícil, es muy denso con un lenguaje abstracto como 'profundidad' y 'colecciones' y bla.

Aquí está la especificación: http://www.webdav.org/specs/rfc4918.html

Pero la mejor manera de entender el protocolo es ver a un cliente interactuar con un servidor de trabajo. Utilicé Transmit para conectarme al servidor WebDAV de Box.net y controlar el tráfico con Charles Proxy.

+1

+1 para mostrar tu código – toong

Cuestiones relacionadas