Фильтр перекрестного происхождения со встроенной пристанью
Я пытаюсь заставить CrossOriginFilter работать с парой встроенных серверов Jetty, которые работают в нашей внутренней сети. Оба работают сервлетами, но мне нужна веб-страница сервера А, чтобы можно было публиковать сервлеты сервера В. Я думаю, что мне нужно добавить ACCESS_CONTROL_ALLOW_ORIGIN в CrossOriginFilter, но выяснить, как это сделать с помощью встроенного экземпляра Jetty без web.xml, оказывается непросто. Я получаю следующее сообщение об ошибке в браузере при попытке доступа к серверу b сервера
No 'Access-Control-Allow-Origin' header is present on the requested resource
Я использую angularjs для публикации на сервлере другого сервера в контроллере.
А вот код для одного из серверов (оба практически одинаковы)
Server server = new Server(httpPort);
ResourceHandler resource_handler = new ResourceHandler();
resource_handler.setDirectoriesListed(true);
resource_handler.setWelcomeFiles(new String[] { "index.html" });
resource_handler.setResourceBase("./http/");
ServletHandler handler = new ServletHandler();
handler.addServletWithMapping(ServerPageRoot.class, "/servlet/*");
FilterHolder holder = new FilterHolder(CrossOriginFilter.class);
holder.setInitParameter(CrossOriginFilter.ALLOWED_ORIGINS_PARAM, "*");
holder.setInitParameter(CrossOriginFilter.ACCESS_CONTROL_ALLOW_ORIGIN_HEADER, "*");
holder.setInitParameter(CrossOriginFilter.ALLOWED_METHODS_PARAM, "GET,POST,HEAD");
holder.setInitParameter(CrossOriginFilter.ALLOWED_HEADERS_PARAM, "X-Requested-With,Content-Type,Accept,Origin");
handler.addFilter(holder );
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[] { resource_handler, handler,new DefaultHandler() });
server.setHandler(handlers);
server.start();