【问题标题】:How to handle CORS in Apache Wink?如何在 Apache Wink 中处理 CORS?
【发布时间】:2013-07-30 12:28:03
【问题描述】:

如何在 Apache Wink 中应用 CORS?我基本上需要的是在 Wink 发送的每个响应中添加一个 Access-Control-Allow-Origin: * 标头(我们将替换 * 为允许的来源)。

【问题讨论】:

    标签: http-headers response cors access-control apache-wink


    【解决方案1】:

    一个可能的解决方案是返回一个javax.ws.rs.core.Response 对象。使用javax.ws.rs.core.Response.ResponseBuilder,您可以在响应中添加标头。

    更新:

    另一种解决方案是在 Wink 之上添加一个 Servlet 过滤器 (javax.servlet.Filter),它将标头添加到所有响应中。

    顺便说一句,在 JAX-RS 2 中可以添加过滤器和拦截器。

    【讨论】:

    • 是的,但这意味着我必须为我拥有的每个请求添加此标头(包括处理 OPTIONS 请求方法的每个请求的副本)。这是相当多的工作并且容易出错。我试图向链中添加一个自定义的 ResponseHandler,这很有效,但我不知道如何为每个响应添加一个标题。
    • 另一种解决方案是在 Wink 之上添加一个 javax.servlet.Filter,它将标头添加到所有响应中。
    • 嘿,我想应该可以,我会试一试。谢谢!
    【解决方案2】:

    答案较晚,但可能对未来的读者有用。发回响应时使用以下代码:

    Response
                .status(200)
                .header("Access-Control-Allow-Origin", "*")
                .header("Access-Control-Allow-Headers", "origin, content-type, accept, authorization")
                .header("Access-Control-Allow-Credentials", "true")
                .header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD")
                .header("Access-Control-Max-Age", "1209600")
                .entity(yourJsonResponse)
                .build();
    

    响应类型为:javax.ws.rs.core.Response;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-31
      • 2015-03-15
      • 2018-12-22
      • 1970-01-01
      • 2020-05-22
      • 2011-04-30
      • 2017-11-01
      • 1970-01-01
      相关资源
      最近更新 更多