我正在使用Milton WebDAV服務器(1.6.8)和一個嵌入式Grizzly servlet容器(2.1.7),並且在其默認配置中,PUT請求(至少與Cyberduck頒發的一樣)不起作用。我已經跟蹤了HTTP 100 Continue如何處理的問題(它顯然也影響了Jetty),Milton mailing list和bug tracker上的消息說這是servlet容器的錯誤,該容器嘗試使用「透明期望/繼續處理「。如何獲取HTTP 100繼續在嵌入式Grizzly上使用WebDAV?
是的,容器透明地處理期望繼續有效地打破Webdav的HTTP安全。 HTTP使用挑戰/響應安全模型,許多客戶依賴它。也就是說,如果執行PUT,他們只會執行未經身份驗證的PUT,並依靠ExpectContinue確保在文件上傳前發佈挑戰。
但透明處理ExpectContinue在milton API能夠檢查當前用戶是否通過身份驗證和授權執行操作之前,整個文件會被上傳。
根據您支持的客戶和您的使用情況,這可能是完全不可接受的,這是一個麻煩或根本不是問題。
但是,一般來說,我認爲您應該嘗試查明Grizzly的透明處理是否可以禁用,然後在milton中重新啓用支持。
我該怎麼做才能禁用灰熊的透明預期/繼續處理,這是真正正確的方法嗎?另一種方法是關閉Milton的預期/繼續處理,但這似乎打破了WebDAV身份驗證。
更新:我也試過現在碼頭(8.1.0.RC1),它表現出相同的行爲,灰熊:只希望/繼續處理關閉我可以把文件,它不會默認設置工作。
米爾頓有一個「參考容器」,期望 - 繼續開箱即用嗎?如果我不能使它工作,我不必使用灰熊。 – Thilo