RESTful放置和删除以及防火墙

RESTful放置和删除以及防火墙,rest,firewall,Rest,Firewall,在经典的“RESTful Web服务”一书(O'Reilly,ISBN 978-0-596-52926-0)中,第251页写道“一些防火墙阻止HTTP PUT和DELETE,但不阻止POST。” 这仍然是真的吗 如果这是真的,我必须允许过载的POST代替DELETE。一些7层防火墙可以分析到这种程度的流量。但我不确定有多少地方会这样配置它们。您可以在serverfault.com上查看这种配置的流行程度(您也可以随时与您的IT人员进行检查)您可以将防火墙配置为您想要的任何内容(至少在理论上如此)

在经典的“RESTful Web服务”一书(O'Reilly,ISBN 978-0-596-52926-0)中,第251页写道“一些防火墙阻止HTTP PUT和DELETE,但不阻止POST。”

这仍然是真的吗


如果这是真的,我必须允许过载的POST代替DELETE。

一些7层防火墙可以分析到这种程度的流量。但我不确定有多少地方会这样配置它们。您可以在serverfault.com上查看这种配置的流行程度(您也可以随时与您的IT人员进行检查)

您可以将防火墙配置为您想要的任何内容(至少在理论上如此),因此如果某些系统管理员阻止HTTP PUT/DELETE,请不要感到惊讶

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



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

我不会担心为了支持删除请求而重载帖子

HTML4.0和XHTML1.0只支持GET和POST请求(via),因此通过隐藏的表单字段(服务器读取并适当地分配)来隧道PUT/DELETE是很常见的。这种技术保留了浏览器之间的兼容性,并允许您忽略任何防火墙问题

RubyonRails和.NET都以这种方式处理RESTful请求


目前,XMLHttpRequest请求对象完全支持GET、POST、PUT和DELETE请求。XHTML2.0还正式支持GET、POST、PUT和DELETE。

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


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

我们使用的是HTTPS。(Duh--我应该意识到防火墙甚至看不到标题。)谢谢!杰出的我用HTTPS解决了这个问题。对于那些在家里玩游戏的人,我的平衡服务器(pound)报告了如下情况:
Sep 6 13:00:08 bal01 pound:(b6515b70)从1.2.3.4读取的错误:连接超时
:直到今天我才知道这些是被防火墙阻止的删除请求。值得注意的是,PUT请求得到了很好的通过。问题是如何判断请求是否会被阻止,在这种情况下,通过POST进行隧道删除:我真的不准备为0.02%(需要引用)的用户打破REST(我衡量这种情况发生的频率)。此外,HTML5仅允许在表单上获取/发布,尽管ASP.NET MVC例如使用隐藏的X-HTTP-Method-Override表单字段(当然,如果您选择在其中放置一个字段),以实现服务器映射到正确的HttpPut或HttpDelete方法