RESTful PUT和DELETE以及防火墙

时间:2009-12-01 20:44:24

标签: rest firewall

在经典的“RESTful Web Services”一书中(O'Reilly,ISBN 978-0-596-52926-0),它在第251页说“有些防火墙会阻止HTTP PUT和DELETE而不是POST。”

这仍然是真的吗?

如果确实如此,我必须允许重载的POST替换DELETE。

4 个答案:

答案 0 :(得分:16)

阻止HTTP PUT / DELETE的防火墙通常会阻止传入连接(防火墙后面的服务器)。假设您可以控制保护应用程序的防火墙,您不必担心它。

此外,防火墙只有在对网络流量进行深度检查时才能阻止PUT / DELETE。加密将阻止防火墙分析URL,因此如果您使用HTTPS(您使用SSL保护数据,对吗?)访问您的Web服务的客户端将能够使用任何标准的四个HTTP动词。

答案 1 :(得分:1)

大约7层防火墙可以分析这种程度的流量。但我不确定有多少地方可以配置它们。您可以在serverfault.com上查看这样的配置有多受欢迎(您也可以随时咨询您的IT员工)

答案 2 :(得分:1)

我不担心重载POST以支持DELETE请求。

HTML 4.0和XHTML 1.0 支持GET和POST请求(通过),因此通过隐藏的表单字段对PUT / DELETE进行隧道传输是很平常的,该字段由服务器读取并适当地进行处理。此技术可保持跨浏览器的兼容性,并允许您忽略任何防火墙问题。

Ruby On Rails和.NET都以这种方式处理RESTful请求。

除了GET,POST,PUT&目前,XMLHttpRequest请求对象完全支持DELETE请求。 XHTML 2.0正式支持GET,POST,PUT&也可以删除。

答案 3 :(得分:0)

您可以根据需要配置防火墙(至少在理论上),所以如果某些系统管理员阻止HTTP PUT / DELETE,请不要感到惊讶。

HTTP PUT/DELETE的危险与某些配置错误的服务器有关:PUT替换文档(并DELETE删除它们;-)在目标服务器上。所以一些系统管理员决定阻止PUT的权利,以防某个地方破解。


当然,我们谈论的是防火墙在“第7层”,而不仅仅是在IP层; - )