我用Windows 8内置的WebDAV客户端(Microsoft-WebDAV-MiniRedir)创建了一个webdav连接。
我只有文件的读取权限,并尝试删除一个。
我可以通过右键单击上下文菜单并将其删除来打开,尽管我的 WebDAV 服务器返回 401 未经授权。该文件在资源管理器中消失,就好像它已被删除一样。
如果我关闭资源管理器窗口并再次打开它,文件又回来了,没关系。
为什么没有拒绝删除,为什么我没有从 WebDAV 客户端收到"401 未经授权的访问"之类的错误消息?
以下是请求和响应。
请求:
DELETE https://xxx.yyy.zz/webdav/mysharedfolder/file1.txt HTTP/1.1
Connection: Keep-Alive
User-Agent: Microsoft-WebDAV-MiniRedir/6.3.9600
translate: f
Host: xxx.yyy.zz
Authorization: Basic dlk7uXNvcmt1QHdlYi5kZTpRd2VyMTIzNA==
Cookie: JSESSIONID=A7497F42472ECC676E44A90E3C5D5E7
响应:
HTTP/1.1 401 Unauthorized
Date: Thu, 13 Nov 2014 23:21:43 GMT
Server: Apache-Coyote/1.1
WWW-Authenticate: Basic realm="https://xxx.yyy.zz/webdav/mysharedfolder/file1.txt"
Content-Length: 0
Connection: close
Content-Type: text/plain; charset=UTF-8
对 OPTIONS 请求(或任何 webdav 请求)的重定向是可疑的,我不认为 windows 会正确处理这个问题,所以这可能是需要考虑的事情。但我也依稀记得几年前在Win7上遇到过类似的事情。解决方法可能是为小型重定向程序代理返回不同的 4xx 错误代码。