Как добавить заголовок CORS к ответу, полученному от StaticHttpHandler сервера Grizzly в Джерси 2? - PullRequest
1 голос
/ 11 октября 2019

Как добавить заголовки CORS (Access-Control-Allow-Origin, Access-Control-Allow-Methods) в каждый файл ответов для файлов, обслуживаемых staticHttpHandler в Джерси (версия 2.2)?

Я пробовалдобавить CorsResponseFilter, но это не помогает для статического содержимого.

public static void main(String[] args) throws Exception {
    String BASE_URI = "http://localhost:8081/";
    final ResourceConfig rc = new ResourceConfig().packages("org.example");
    rc.register(CorsResponseFilter.class);
    HttpServer server = GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc);

    File dir = new File(ClassLoader.getSystemClassLoader().getResource(".").getPath());
    StaticHttpHandler staticHttpHandler = new StaticHttpHandler(dir.getPath());
    server.getServerConfiguration().addHttpHandler(staticHttpHandler, "/data/");

    System.out.println("Press Enter to stop Restful service");
    System.in.read();
    server.shutdownNow();
}

Этот класс CorsResponseFilter добавляет заголовки для каждого ответа, полученного из классов ресурсов приложения Jersey. Но это не добавляет заголовки для статических файлов. Я также проверил в браузере и почтальоне, что файлы доступны (но без заголовка cors). И у меня появляется сообщение об ошибке при попытке извлечь файлы из одностраничного приложения javascript.

...