【问题标题】:How do i disable options request method from being even processed in dropwizard我如何禁用选项请求方法甚至在 dropwizard 中处理
【发布时间】:2018-10-27 16:49:52
【问题描述】:

我将带有 OPTIONS 请求方法的 curl 命令发送到我的 dropwizard 应用程序。我得到 200 Ok 和 POST 和 OPTIONS 方法允许作为响应。

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

我尝试实现一个自定义请求过滤器,该过滤器以 405 not allowed 响应选项方法,并使用 NameBinding 添加到资源中,但我认为 OPTIONS 请求此时没有到达,所以我仍然得到 200OK 和相同的 POST, OPTIONS 纯文本响应。

我还尝试在 environment.servlets.addFilter() 中使用 CrossOriginFilter.class 并将其配置为不允许 OPTIONS 请求。但这也没有用。

我在这里收到了另一个帖子: Disable OPTIONS Method Jetty Server

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

【问题讨论】:

    标签: jersey jetty dropwizard options http-status-code-405


    【解决方案1】:

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

    server:
      allowedMethods:
      - GET
    

    应用程序现在对所有 OPTION 请求都返回 405。

    【讨论】:

    • 我不能只为 url 模式做吗?
    【解决方案2】:

    我想通了,

    在 dropwizard 的上下文中:

    实现这一点的两种方法是

    1. 【简易方法】创建请求过滤器,并根据要禁用 OPTIONS 请求的 URL 列表进行过滤。

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

    详细方法二: 首先,您需要扩展ApplicationEventListener 并注册所有此类方法 在APPLICATION_START 事件期间(使用反射)。 然后,您还扩展RequestEventListener 并监听事件,然后从uriInfo 中找到您在request context 中获得的方法,然后检查您在应用程序启动时创建的方法列表。有关更多示例实现,请参阅 @UnitOfWork 注释如何工作并为资源方法设置 SessionFactory

    【讨论】:

      猜你喜欢
      • 2020-03-01
      • 2020-02-02
      • 2022-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-24
      • 2016-08-14
      • 1970-01-01
      相关资源
      最近更新 更多