2009-12-01 834 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