Jersey 如何禁用在dropwizard中处理选项请求方法
我向dropwizard应用程序发送带有选项请求方法的curl命令。我得到了200个Ok和POST以及允许的选项方法作为响应 由于安全原因,我如何阻止这种情况发生,因为这提供了有关支持内容的一些信息 我尝试实现一个自定义请求过滤器,该过滤器使用选项方法的405 not allowed进行响应,并使用名称绑定将其添加到资源中,但我认为选项请求无法到达该点,因此我仍然得到200OK和相同的帖子,选项纯文本响应 我还尝试在environment.servlets.addFilter()中使用CrossOriginFilter.class,并将其配置为不允许选项请求。但这也不起作用 我在这里得到了另一个帖子:Jersey 如何禁用在dropwizard中处理选项请求方法,jersey,jetty,dropwizard,options,http-status-code-405,Jersey,Jetty,Dropwizard,Options,Http Status Code 405,我向dropwizard应用程序发送带有选项请求方法的curl命令。我得到了200个Ok和POST以及允许的选项方法作为响应 由于安全原因,我如何阻止这种情况发生,因为这提供了有关支持内容的一些信息 我尝试实现一个自定义请求过滤器,该过滤器使用选项方法的405 not allowed进行响应,并使用名称绑定将其添加到资源中,但我认为选项请求无法到达该点,因此我仍然得到200OK和相同的帖子,选项纯文本响应 我还尝试在environment.servlets.addFilter()中使用Cross
但是如何通过java代码在dropwizard中实现这一点?您可以通过指定YAML配置文件上允许的方法,在DW中的全局应用程序级别禁用选项请求:
server:
allowedMethods:
- GET
应用程序现在在所有选项请求中返回405。我想出来了
在dropwizard的上下文中:
实现这一目标的两种方法是
@OptionsFilter
应用程序启动期间(使用反射)。
然后,您还可以扩展RequestEventListener
并侦听事件,然后从uriInfo
中找到方法,该方法位于request context
中,然后签入在应用程序启动时创建的方法列表。有关更多示例实现,请参见@UnitOfWork
注释如何工作,并为资源方法设置会话工厂。我不能仅为url模式执行此操作吗?