2009-12-01 87 views
20

在經典的「REST Web服務」一書(O'Reilly出版,ISBN 978-0-596-52926-0),它說251頁的「某些防火牆會阻止HTTP PUT和DELETE而不是POST 「。REST的PUT和DELETE和防火牆

這仍然是真的嗎?

如果這是真的,我必須讓超載POST來代替DELETE。

+0

的問題是如何判斷的請求將被阻塞,在這種情況下,隧道刪除了POST:我真的不準備打破REST爲0.02%[需要的引證]用戶(我的頻率這一措施發生)。 – 2012-09-06 03:11:59

回答

14

防火牆阻斷HTTP PUT/DELETE通常阻止傳入連接(到服務器的防火牆後面)。假設你有防火牆的控制權來保護你的應用程序,你不需要擔心它。

此外,防火牆只能塊PUT/DELETE如果它們對網絡流量進行深入檢查。加密會防止防火牆從分析URL,因此,如果您正在使用HTTPS(你用SSL保護您的數據,對不對?)客戶端訪問Web服務將能夠使用任何標準的四個HTTP動詞。

+1

我們使用的是HTTPS。 (杜 - 我應該已經意識到防火牆甚至無法看到標題。)謝謝! – 2009-12-12 00:55:26

+1

非常好。執行HTTPS爲我解決了這個問題。對於那些在家裏玩的人,我的平衡服務器(磅)報告如下:'9月6日13:00:08 bal01磅:(b6515b70)錯誤讀取自1.2.3。4:連接超時':我直到今天才知道這些是DELETE請求,被防火牆阻止。值得注意的是,PUT請求正在通過罰款。 – 2012-09-06 03:10:05

1

一些7個防火牆可以分析流量到這種程度。但我不確定有多少地方會配置它們。你可以檢查serverfault.com,看看這樣的配置可能有多受歡迎(你也可以隨時與你的IT人員覈對)

0

你可以根據你的需要配置防火牆(至少在理論上)如果某些系統管理員阻止HTTP PUT/DELETE,那麼不會感到驚訝。

HTTP PUT/DELETE的危險是關於一些錯誤配置的服務器:PUT替換文件(並且DELETE刪除它們;-)在目標服務器上。因此,某些系統管理員決定阻止PUT以防在某處打開某個裂縫。


當然,我們談論的是防火牆的「7層」行事,而不是隻是在IP層;-)

1

我不會擔心超載POST支持DELETE請求。 (通過)

HTML 4.0和XHTML 1.0 支持GET和POST請求所以它是司空見慣的隧道通過由服務器讀取並適當dispathced一個隱藏的表單字段中的PUT/DELETE。這項技術可以保持跨瀏覽器的兼容性,並允許您忽略任何防火牆問題。

Ruby on Rails和.NET兩個處理以這種方式RESTful請求。

作爲旁邊的GET,POST,PUT &目前通過XMLHttpRequest請求對象完全支持DELETE請求。 XHTML 2.0的官方支持GET,POST,PUT & DELETE。

+0

除了HTML5只允許獲得/表單上後雖然ASP.NET MVC例如採用了隱藏式X-HTTP-方法,覆蓋表單字段(如果你選擇把一個有當然的)來實現服務器映射到正確的HttpPut或HttpDelete方法 – 2013-09-17 05:27:41