在经典的“RESTful Web Services”一书中(O'Reilly,ISBN 978-0-596-52926-0),它在第251页说“有些防火墙会阻止HTTP PUT和DELETE而不是POST。”
这仍然是真的吗?
如果确实如此,我必须允许重载的POST替换DELETE。
答案 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层; - )