Как включить настройку CORS для сервера свободы, который устанавливается через Docker - PullRequest
1 голос
/ 24 июня 2019

Я установил IBM ODM через докер.Мне нужно настроить политику CORS (Cross-Origin Resource Sharing) для сервера свободы.Я сделал CORS, настроенный в server.xml на моем локальном компьютере.Но я не знал, как это сделать для установки докера.

Я добавил ниже строки кода в server.xml, расположенном в /opt/ibm/wlp/usr/servers/defaultServer.

Но при получении сообщения об ошибке «Access to XMLHttpRequest» в «http://18.3.4.71.compute.amazonaws.com/DecisionService/rest/v1/deployment/insurance_offer/WADL' from origin» http://nbo -ui.s3-website-ap-1.amazonaws.com 'естьбыл заблокирован политикой CORS: Ответ на запрос предварительной проверки не проходит проверку контроля доступа: в запрашиваемом ресурсе отсутствует заголовок «Access-Control-Allow-Origin».

1 Ответ

1 голос
/ 24 июня 2019

Существует два способа включить CORS для сервера Liberty:

  1. Использовать фильтр ответов JAX-RS (если конечные точки являются ресурсами JAX-RS)
  2. Используйте элемент конфигурации <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/
...