Существует два способа включить CORS для сервера Liberty:
- Использовать фильтр ответов JAX-RS (если конечные точки являются ресурсами JAX-RS)
- Используйте элемент конфигурации
<cors>
в server.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");
}
}
Чтобы использовать путь server.xml:
Добавьте следующий элемент конфигурации в ваш server.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" />
Если вы используете способ server.xml с Docker, если вы еще этого не делаете, вам нужно добавить конфигурацию server.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/