gpt4 book ai didi

java - 用于在 JAX-RS 服务中设置 HTTP 响应 header 的自定义注释

转载 作者:行者123 更新时间:2023-12-02 07:54:36 26 4
gpt4 key购买 nike

我有一个 JAX-RS Web 服务,我想通过新的 CORS 禁用同源策略。 HTTP header 。 (我完全意识到安全隐患。)

我想要一个自定义注释,可以让我设置 HTTP 响应 header 。例如,

@ResponseHeaders({"Access-Control-Allow-Origin: *",
"Access-Control-Allow-Methods: GET"})
// Or, alternatively:
@AllowOrigins({"*"})
public String resourceMethod() { ... }

这种方法最大限度地减少了样板代码,但我不确定是否存在微妙的技术限制; JAX-RS 提供了许多注释来处理 HTTP 请求,但不处理响应,@Produces 似乎是唯一的异常(exception)。

如果可能的话,我也更喜欢远离太多的 web.xml 配置。无需明确需要使用 ResponseBuilder (如果注释使用一个也可以),是否有一种干净的方法来设置自定义 HTTP 响应 header ?

为了澄清,我正在寻找与设置 HTTP 响应 header 的各种方法集成的注释,以最大限度地减少样板代码。

最佳答案

也许唯一的规范驱动方法是使用自定义 MessageBodyWriter。在 writeTo() 方法中,您将传入一个 MultivaluedMap,您可以在其中设置响应 header 。您还会传递所调用的资源方法上的注释(因此您可以获得所需的任何自定义注释)。因此,请阅读注释,通过 MultivaluedMap 设置 header ,然后使用传入的 OutputStream 写入消息正文。

Apache Wink以及可能的其他 JAX-RS 框架,您可以创建自定义服务器端处理程序,这些处理程序还可以读取资源方法上的注释并执行您想要的任何操作(例如默认设置响应 header )。

关于java - 用于在 JAX-RS 服务中设置 HTTP 响应 header 的自定义注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3902234/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com