Je mon service reste en cours d'exécution sur un serveur Jersey configuré comme suit:Comment modifier les en-têtes de réponse en jersey
try {
final ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath(serverConfig.getContextPath());
final Server jettyServer = new Server(serverConfig.getPort());
jettyServer.setHandler(context);
ResourceConfig config = new ResourceConfig();
config.register(CORSResponseFilter.class);
final ServletHolder jerseyServlet = context.addServlet(org.glassfish.jersey.servlet.ServletContainer.class, serverConfig.getBaseName());
jerseyServlet.setInitOrder(0);
jerseyServlet.setInitParameter("jersey.config.server.provider.packages", "com.myRest.rest");
jerseyServlet.setInitParameter("jersey.config.server.provider.classnames", entryPoints());
jettyServer.start();
jettyServer.join();
} catch (Exception e) {
e.printStackTrace();
}
Je suis en train de modifier les en-têtes de toutes les réponses, de sorte que j'utiliser un filtre:
@Provider
public class CORSResponseFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
throws IOException {
MultivaluedMap headers = responseContext.getHeaders();
headers.add("Access-Control-Allow-Origin", "*");
headers.add("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
headers.add("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, X-Codingpedia");
}
}
Toutefois, pour une raison quelconque, ce filtre n'est jamais appelé. J'utilise embebed jetty 9.2.13.v20150730. J'ai vu quelques réponses qui suggèrent de changer web.xml, mais je n'utilise pas la configuration de xml.