Jersey 如何禁用在dropwizard中处理选项请求方法

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

我向dropwizard应用程序发送带有选项请求方法的curl命令。我得到了200个Ok和POST以及允许的选项方法作为响应

由于安全原因,我如何阻止这种情况发生,因为这提供了有关支持内容的一些信息

我尝试实现一个自定义请求过滤器,该过滤器使用选项方法的405 not allowed进行响应,并使用名称绑定将其添加到资源中,但我认为选项请求无法到达该点,因此我仍然得到200OK和相同的帖子,选项纯文本响应

我还尝试在environment.servlets.addFilter()中使用CrossOriginFilter.class,并将其配置为不允许选项请求。但这也不起作用

我在这里得到了另一个帖子:


但是如何通过java代码在dropwizard中实现这一点?

您可以通过指定YAML配置文件上允许的方法,在DW中的全局应用程序级别禁用选项请求:

server:
  allowedMethods:
  - GET
应用程序现在在所有选项请求中返回405。

我想出来了

在dropwizard的上下文中:

实现这一目标的两种方法是

  • [Easy way]创建一个请求筛选器,并根据要禁用请求选项的URL列表进行筛选

  • [Cool way]如果您想在特定API资源方法上使用基于注释的过滤器,如
    @OptionsFilter

  • 详细第二种方法: 首先,您需要扩展ApplicationEventListener并注册所有此类方法 在
    应用程序启动期间(使用反射)。
    
    然后,您还可以扩展
    RequestEventListener
    并侦听事件,然后从
    uriInfo
    中找到方法,该方法位于
    request context
    中,然后签入在应用程序启动时创建的方法列表。有关更多示例实现,请参见
    @UnitOfWork
    注释如何工作,并为资源方法设置
    会话工厂。

    我不能仅为url模式执行此操作吗?