- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用带有嵌入式 Grizzly servlet 容器 (2.1.7) 的 Milton WebDAV 服务器 (1.6.8),在它们的默认配置中,PUT 请求(至少由 Cyberduck 发出)不起作用。我已将问题归结为 HTTP 100 Continue 处理方式的问题(它显然也影响 Jetty),Milton mailing list 上的一条消息和 bug tracker说这是 servlet 容器的错误,它试图通过“透明的期望/继续处理”变得聪明。
Yes, containers which transparently handle expect continue effectively break HTTP security for Webdav. HTTP uses a challenge/response security model and many clients rely on that. Ie if doing a PUT they will simply do an un-authenticated PUT and rely on ExpectContinue to ensure that the challenge is issued before the file is uploaded.
But with transparent handling of ExpectContinue the entire file gets uploaded before the milton API is able to check if the current user is authenticated and authorised to perform the action.
Depending on your supported clients and you use cases this can either be wholely unacceptable, a nuisance or not an issue at all.
But, generally, I think you should try to find out if Grizzly's transparent handling can be disabled, and then re-enable support in milton.
我可以做些什么来禁用 Grizzly 的透明期望/继续处理,这种方法真的正确吗?另一种方法是关闭 Milton 中的 expect/continue 处理,但这似乎会破坏 WebDAV 身份验证。
更新:我现在也尝试了 Jetty (8.1.0.RC1),它表现出与 Grizzly 相同的行为:只有关闭 expect/continue 处理,我才能使用默认的 PUT 文件设置它不起作用。
最佳答案
关于 Grizly 2.x,您需要重写 ServletHandler
中的 sendAcknowledgment
方法,如下所示:
class MyServletHandler extends ServletHandler
{
protected boolean sendAcknowledgment(final Request request,
final Response response)
throws IOException
{
if (authClient(request, response)
{
return super.sendAcknowledgment(request, response);
}
else
{
response.setStatus(HttpStatus.EXPECTATION_FAILED_417);
return false;
}
}
}
希望对您有所帮助。
关于http - 如何获得 HTTP 100 继续在嵌入式 Grizzly 上为 WebDAV 工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8380324/
我需要一个可以执行 WebDAV 上传 (HTTP PUT) 的命令行实用程序。 最佳答案 cURL将为您做。 curl -T filetoput.xml http://www.url.com/fil
我不知道如何更改 webdav 密码。我做了一些搜索,找到了很多关于如何将新用户添加到 webdav 的资源,但没有关于更改密码的信息。有人知道吗? 最佳答案 Passwords are stored
有哪些学习 Exchange Web 服务的好资源? 我熟悉 WebDAV,想知道 Exchange Web 服务是否更适合我们与 Exchange 进行的某些集成。 最佳答案 几周前,我为 Exch
我正在使用 IT HIT WebDAV 引擎和 .net 5 为基于数据库的 ECM 系统开发 WebDAV 连接。 我已将 WebDAV 映射到资源管理器中的网络驱动器。 当我在资源管理器中列出所有
我需要使用 WebDAV 上传文件,但我的问题是服务器将上传限制为最大 100MB。有没有办法分块上传(因此多个请求可以绕过这个 100MB 限制)?服务器确实允许您在那里保存更大的文件,因此如果我能
编写 Nautilus 脚本时,$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS 给出已单击上下文菜单的文件的路径,例如 /home/nico/test.txt。 但是当文件位
我需要使用 WebDAV 上传文件,但我的问题是服务器将上传限制为最大 100MB。有没有办法分块上传(因此多个请求可以绕过这个 100MB 限制)?服务器确实允许您在那里保存更大的文件,因此如果我能
编写 Nautilus 脚本时,$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS 给出已单击上下文菜单的文件的路径,例如 /home/nico/test.txt。 但是当文件位
我的网络中有一台 Apache 服务器,并使用摘要式身份验证进行 WebDAV 共享。我还使用Windows 7中的“添加网络位置”来添加WebDAV共享。到目前为止,WebDAV 共享工作没有任何问
我一直在看 http://plone.org/documentation/kb/webdav http://plone.org/documentation/kb/more-webdav 并且我能够使用
我们有一个 WebDAV servlet,并开始启动并运行 MS Word。我们有 OPTIONS 和 PROPFIND 和 GET。你知道 Word 要求的其他动词吗? 最佳答案 根据 RFC 25
我正在为 WebDav 功能设置联合身份验证,我正尝试使用 IT Hit Web DAV 库来实现该功能。在 Adding webdav to existing project 下的库文档中,它提到:
由于我们有一个主要基于 AngularJS 客户端和服务器端 WebAPI 2 REST 服务的 ASP.NET 网站,我们使用 OAuth 2 来验证我们的用户。ü这就像一个魅力。 现在我们正在考虑
我正在创建一个用于管理远程 MS Office 文档的解决方案。我使用 IT Hit WebDAV System (www.webdavsystem.com) 制作的库作为原型(prototype)。
Microsoft IE8 和 IE9 用于提供启动功能网页内 Windows 计算机上的 WebDAV 资源管理器: function fnDavStart(oSpanObj, s
我正在集成我的应用程序,以便它可以编辑存储在 SharePoint 中的文件。我正在使用 Web 客户端服务 AKA WebDAV Redirector(webclnt.dll),它出色地完成了让正常
CMIS和WebDAV之间的主要技术区别是什么? 如果适用,CMIS与WebDAV相比究竟有什么改进? 我并不是在问采用率或实现数量,而是在问这些标准之间的技术差异。 最佳答案 没有简单的答案。 We
我想编辑一些STK模板。我使用NetDrive访问木兰资源,但这不起作用,请参见屏幕截图: 我在做什么工作? 我也尝试了this tutorial,但是重新启动tomcat服务器之后,没有任何变化。
我在freebsd系统上构建了nginx,配置参数如下: ./configure ... –with-http_dav_module 现在这是我的配置文件: user www www; worker_
我想使用 WebDAv 服务器在我的 iphone 项目中的系统和(iPod 或 iPhone)之间共享文件。要使用它,我必须使用单独的网络服务器吗?或者它是一个内置设施? 最佳答案 WebDAV 是
我是一名优秀的程序员,十分优秀!