如何为通过 Docker 安装的自由服务器启用 CORS 设置



我已经通过docker安装了IBM ODM。我需要为 liberty 服务器设置 CORS(跨域资源共享(策略。我在服务器中设置了 CORS.xml在我的本地。但是我不知道如何为码头工人安装做。

我在 server 中添加了以下代码行.xml位于/opt/ibm/wlp/usr/servers/defaultServer 下。

但是,CORS 策略阻止了从源"http://nbo-ui.s3-website-ap-1.amazonaws.com"收到名为"http://18.3.4.71.compute.amazonaws.com/DecisionService/rest/v1/deployment/insurance_offer/WADL"处访问 XMLHttpRequest 的错误消息:对预检请求的响应未通过访问控制检查:请求的资源上不存在"访问控制-允许源"标头。

有两种

方法可以为 Liberty 服务器启用 CORS:

    使用 JAX-RS
  1. 响应过滤器(如果端点是 JAX-RS 资源(
  2. 在服务器中使用<cors>配置元素.xml

要使用 JAX-RS 响应过滤器方式:

将此类添加到 JAX-RS 应用程序中:

@Provider
public class CORSFilter implements ContainerResponseFilter {
    @Override
    public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException {
        responseContext.getHeaders().add("Access-Control-Allow-Origin", "*");
        responseContext.getHeaders().add("Access-Control-Allow-Headers", "origin, content-type, accept, authorization");
        responseContext.getHeaders().add("Access-Control-Allow-Credentials", "true");
        responseContext.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");
        responseContext.getHeaders().add("Access-Control-Max-Age", "1209600");
    }
}

要使用服务器.xml方式:

将以下配置元素添加到服务器.xml:

    <!-- May need to adjust the 'domain' depending on 
         what elements you want to enable CORS for -->
    <cors domain="/"
          allowedOrigins="*"
          allowedMethods="GET, DELETE, POST, PUT"
          allowedHeaders="origin, content-type, accept, authorization, cache-control"
          maxAge="3600" />

如果您正在.xml Docker 中使用服务器,如果您还没有这样做,则需要将服务器.xml配置添加到您的 Docker 映像中,如下所示:

FROM open-liberty:microProfile2
ADD --chown=1001:0 build/libs/myApp.war /config/dropins
# Assuming the server.xml is in the src/main/liberty/config/ folder
COPY --chown=1001:0 src/main/liberty/config /config/

相关内容

  • 没有找到相关文章

最新更新