我如何禁用选项请求方法甚至在 dropwizard 中被处理
How do i disable options request method from being even processed in dropwizard
我向我的 dropwizard 应用程序发送了带有 OPTIONS 请求方法的 curl 命令。我得到 200 Ok 和 POST 以及允许的 OPTIONS 方法作为响应。
出于安全原因,我该如何阻止这种情况发生,因为这提供了有关支持内容的一些信息。
我尝试实现一个自定义请求过滤器,该过滤器以 405 not allowed 响应选项方法,并使用 NameBinding 添加到资源,但我认为 OPTIONS 请求此时未到达所以我仍然得到 200OK 和相同的 POST,OPTIONS 纯文本响应。
我还尝试在 environment.servlets.addFilter() 中使用 CrossOriginFilter.class 并将其配置为不允许 OPTIONS 请求。但这也没有用。
我在这里得到另一个 post :
Disable OPTIONS Method Jetty Server
但是我如何通过 java 代码在 dropwizard 中实现这一点?
您可以通过在 YAML 配置文件中指定允许的方法来禁用 DW 中全局应用程序级别的 OPTIONS 请求:
server:
allowedMethods:
- GET
应用程序现在对所有 OPTION 请求返回 405。
我想通了,
在 dropwizard 的上下文中:
实现此目的的两种方法是
[简单方法] 创建请求过滤器并根据要禁用 OPTIONS 请求的 URL 列表进行过滤。
[很酷的方式] 如果你想在特定的 API 资源方法上使用像 @OptionsFilter
这样的基于注解的过滤器。
方法二详解:
首先,您需要扩展 ApplicationEventListener
并注册所有这些方法
在 APPLICATION_START
事件期间(使用反射)。
然后,您还扩展 RequestEventListener
并监听事件,然后从 uriInfo
中找到您在 request context
中获得的方法,然后检查您在应用程序启动时创建的方法列表.有关更多示例实现,请参阅 @UnitOfWork
注释如何工作并为资源方法设置 SessionFactory
。
我向我的 dropwizard 应用程序发送了带有 OPTIONS 请求方法的 curl 命令。我得到 200 Ok 和 POST 以及允许的 OPTIONS 方法作为响应。
出于安全原因,我该如何阻止这种情况发生,因为这提供了有关支持内容的一些信息。
我尝试实现一个自定义请求过滤器,该过滤器以 405 not allowed 响应选项方法,并使用 NameBinding 添加到资源,但我认为 OPTIONS 请求此时未到达所以我仍然得到 200OK 和相同的 POST,OPTIONS 纯文本响应。
我还尝试在 environment.servlets.addFilter() 中使用 CrossOriginFilter.class 并将其配置为不允许 OPTIONS 请求。但这也没有用。
我在这里得到另一个 post : Disable OPTIONS Method Jetty Server
但是我如何通过 java 代码在 dropwizard 中实现这一点?
您可以通过在 YAML 配置文件中指定允许的方法来禁用 DW 中全局应用程序级别的 OPTIONS 请求:
server:
allowedMethods:
- GET
应用程序现在对所有 OPTION 请求返回 405。
我想通了,
在 dropwizard 的上下文中:
实现此目的的两种方法是
[简单方法] 创建请求过滤器并根据要禁用 OPTIONS 请求的 URL 列表进行过滤。
[很酷的方式] 如果你想在特定的 API 资源方法上使用像
@OptionsFilter
这样的基于注解的过滤器。
方法二详解:
首先,您需要扩展 ApplicationEventListener
并注册所有这些方法
在 APPLICATION_START
事件期间(使用反射)。
然后,您还扩展 RequestEventListener
并监听事件,然后从 uriInfo
中找到您在 request context
中获得的方法,然后检查您在应用程序启动时创建的方法列表.有关更多示例实现,请参阅 @UnitOfWork
注释如何工作并为资源方法设置 SessionFactory
。