Я решил решить эту проблему, предоставив ответ CORS сервера на уровне контейнера в Джерси.Это может предложить больше удобства для некоторых приложений, поскольку может применяться ко всем ответам из контейнера без изменения кода обработки ресурсов.
Сначала необходимо создать фильтр ответа контейнера, который будет вставлять соответствующие заголовки.Например, для контейнера, который указывает Access-Control-Allow-Origin: * для любого ответа:
class CORSFilter implements ContainerResponseFilter {
@Override
public ContainerResponse filter(ContainerRequest request, ContainerResponse response) {
response.getHttpHeaders().add("Access-Control-Allow-Origin", "*");
return response;
}
}
Затем необходимо добавить фильтр, чтобы добавить его в цепочку фильтров ответа Джерси.Это можно сделать через конфигурацию ресурса, используемую для приложения.
...
DefaultResourceConfig rc = new ClasspathResourceConfig();
rc.getContainerResponseFilters().add(new CORSFilter());
// now create a simple lightweight server using this resource config.
HttpServer server = HttpServerFactory.create(uri,rc);
...