#604 closed defect (wontfix)
WebDAV: мелкие косяки
Reported by: | Ivan Rozhuk | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | nginx-module | Version: | 1.7.x |
Keywords: | Cc: | ||
uname -a: | FreeBSD firewall 10.0-STABLE FreeBSD 10.0-STABLE #2 r269376MS: Sat Aug 2 18:21:50 MSK 2014 FreeBSD firewall 10.0-STABLE FreeBSD 10.0-STABLE #2 r269376MS: Sat Aug 2 18:21:50 MSK 2014 FreeBSD firewall 10.0-STABLE FreeBSD 10.0-STABLE #2 r269376MS: Sat Aug 2 18:21:50 MSK 2014 | ||
nginx -V: |
nginx version: nginx/1.7.4
TLS SNI support enabled configure arguments: --prefix=/usr/local/etc/nginx --with-cc-opt='-I /usr/local/include' --with-ld-opt='-L /usr/local/lib' --conf-path=/usr/local/etc/nginx/nginx.conf --sbin-path=/usr/local/sbin/nginx --pid-path=/var/run/nginx.pid --error-log-path=/var/log/nginx-error.log --user=www --group=www --with-file-aio --with-ipv6 --http-client-body-temp-path=/var/tmp/nginx/client_body_temp --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp --http-proxy-temp-path=/var/tmp/nginx/proxy_temp --http-scgi-temp-path=/var/tmp/nginx/scgi_temp --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi_temp --http-log-path=/var/log/nginx-access.log --add-module=/tmp/ports/usr/ports/www/nginx-devel/work/ngx_http_auth_pam_module-1.2 --add-module=/tmp/ports/usr/ports/www/nginx-devel/work/openresty-headers-more-nginx-module-0c6e05d --with-http_dav_module --add-module=/tmp/ports/usr/ports/www/nginx-devel/work/arut-nginx-dav-ext-module-0e07a3e --with-http_stub_status_module --add-module=/tmp/ports/usr/ports/www/nginx-devel/work/simpl-ngx_devel_kit-8dd0df5 --with-pcre --add-module=/tmp/ports/usr/ports/www/nginx-devel/work/openresty-set-misc-nginx-module-36fd035 --with-http_spdy_module --with-http_ssl_module |
Description
По мотивам: http://habrahabr.ru/post/232883/
- Некоторые клиенты не добавляют слеш в конце урла для MKCOL
MKCOL /Family/MR3020 HTTP/1.1 Connection: Keep-Alive User-Agent: Microsoft-WebDAV-MiniRedir/6.1.7601 translate: f Content-Length: 0 Host: xxx.xxx.net
Проверка выполняется в ngx_http_dav_module.c строчки 484 — 493.
Может вместо возвращения ошибки просто не отрезать отсутствующий слеш?
2.1 DELETE - полагается на слеш в конце урла для определения удалять ему файл или папку.
Microsoft-WebDAV-MiniRedir - не добавляет слеша к имени папки для удаления, в результате nginx пытается удалить файл, и получает ошибку: 21: Is a directory.
Возможно стоит перестать ориентироваться на слеш?
2.2 DELETE - не удаляет папки, даже пустые.
Прав хватает.
Change History (4)
follow-up: 4 comment:1 by , 9 years ago
Resolution: | → wontfix |
---|---|
Status: | new → closed |
comment:4 by , 22 months ago
Replying to Maxim Dounin:
Replying to rozhuk.im@…:
Вы делаете что-то не так.
Translation: "You are doing something wrong."
I use Finder application from Apple macOS which is not standard, obviously, since it misses the trailing "/". So Apple is "doing something wrong"
However, the only thing I can get from Apple is "wontfix" too. As far as I know, it will be hard to make Apple change its Finder's code because of an open-source webserver software. As good as it is.
Will the open-source developers be as stubborn as Apple ? Or will they consider changing their mind to make this work ?
Or do they prefer this kind of hack to be the "normal" way to user nginx ?
By reopening this non-bug and change your code to respect a non-standard behaviour, you would show NGINX is better.
If not, the only way for "admins" will be to migrate to another Webdav compliant server.
Replying to rozhuk.im@…:
В описании метода MKCOL в стандарте сказано:
Т.к. доступ к папкам в nginx'е реализован только при наличии оконечного слеша, то именно такую форму URI nginx и требует, чтобы папку создать. Было бы странно, если бы nginx получил от клиента один URI, а создал коллекцию с другим URI.
Кроме того, чуть ранее тот же стандарт говорит:
Если клиент поступает иначе - вероятно, стоит поинтересоваться у авторов клиента, зачем они поступают не так, как сказано в стандарте.
См. выше. Кроме того, в случае удаления есть дополнительная проблема: ошибочное удаление папки может иметь массу последствий. Точное указание адреса - то немногое, что nginx может требовать для минимизации проблем.
Вы делаете что-то не так.