Jetty Server Konfiguration
Ich verwende Jetty 9 und habe Probleme mit der Konfiguration. Ich einfache RESTs funktioniert gut. Das Problem begann jedoch, als ich versuchte, allen Anforderungen und Fehlerbehandlungsroutinen neue Header hinzuzufügen. Nur wenn ich diesen Code zu jeder Antwort hinzufüge, kann ich mit Headern umgehen:
return Response.ok(murals)
.header("Access-Control-Allow-Origin", "*")
.header("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT")
.build();
Server Konfiguration:
Server server = new Server(9998);
ServletContextHandler servletContextHandler = new ServletContextHandler(server, "/", ServletContextHandler.SESSIONS);
servletContextHandler.addFilter(GuiceFilter.class, "/*", EnumSet.allOf(DispatcherType.class));
servletContextHandler.addServlet(DefaultServlet.class, "/");
ResourceConfig rc = new ResourceConfig()
.register(FilterHeaders.class)
.register(ExceptionNotFound.class)
.register(CORSFilter.class); //doesnt work
new ServletHolder(new ServletContainer(rc));
HandlerWrapper han = new HandlerWrapper();
han.setHandler(new AbstractHandler() {
@Override
public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
request.setAttribute("welcome","Hello"); //doesn't work
}
});
servletContextHandler.addFilter(Filters.class, "/*", EnumSet.of(DispatcherType.REQUEST)); //doesnt work
ResourceHandler resourceHandler = resourceHandler();
servletContextHandler.setHandler(resourceHandler);
servletContextHandler.setHandler(han);
server.start();
server.join();
CROSFilter Klasse
public class CORSFilter implements ContainerResponseFilter {
@Override
public ContainerResponse filter(ContainerRequest request,
ContainerResponse response) {
response.getHttpHeaders().add("Access-Control-Allow-Origin", "*");
response.getHttpHeaders().add("Access-Control-Allow-Headers",
"origin, content-type, accept, authorization");
response.getHttpHeaders().add("Access-Control-Allow-Credentials", "true");
response.getHttpHeaders().add("Access-Control-Allow-Methods",
"GET, POST, PUT, DELETE, OPTIONS, HEAD");
return response;
}
}
Wie registriere ich Header? Was mache ich falsch? Ich verwende keine WEB-Konfiguration.