是否可以转发更改请求方法的请求?
Posted
技术标签:
【中文标题】是否可以转发更改请求方法的请求?【英文标题】:Is it possible to forward a request changing the request method? 【发布时间】:2011-05-31 12:13:35 【问题描述】:我正在研究一个只允许 GET 请求的网关,而它后面的 REST 端点能够接受各种方法(POST、PUT、DELETE、OPTIONS)。因此,我试图将请求方法作为参数传递,并具有一个过滤器,该过滤器使用正确的方法转发请求。从我在规范中可以看到,它只允许转发请求而不进行任何修改:
request.getRequestDispatcher(route).forward(request, response)
有什么解决方法吗?
注意:重定向对我来说不是一个选项。
【问题讨论】:
【参考方案1】:如果您有一个处理 RESTful 服务的 Rest servlet(通常是这种情况),您可以扩展它并覆盖 service
方法。您可以在那里调用doPost(..)
、doPut(..)
等,具体取决于您想要的参数。 HttpServlet
的默认实现使用request.getMethod()
。
您可以做的另一件事(不太可取)是让您的过滤器使用URL.openConnection
(或apache commons http 组件)向端点发出一个新请求,并将该内部请求的结果流式传输回客户端。在那里你可以指定请求方法。
无论如何,我认为你应该尝试克服网关的限制,因为它会让你处于非常尴尬的境地。
【讨论】:
以上是关于是否可以转发更改请求方法的请求?的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Web API更改请求URI(重定向到另一个方法)