我已经通过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
- 响应过滤器(如果端点是 JAX-RS 资源(
- 在服务器中使用
<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/