부두 9를 사용하고 구성에 몇 가지 문제가 있습니다. 나는 간단한 REST가 잘 작동한다. 하지만 문제는 모든 요청과 오류 처리기에 새 헤더를 추가하려고 할 때 시작되었습니다.부두 서버 구성
return Response.ok(murals)
.header("Access-Control-Allow-Origin", "*")
.header("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT")
.build();
서버 구성 :
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 클래스
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;
}
}
어떻게 헤더를 등록하는 내가 헤더를 처리 할 수 있어요 유일한 방법은 모든 응답에이 코드를 추가하는 것입니다? 내가 도대체 뭘 잘못하고있는 겁니까? WEB 구성을 사용하지 않습니다.
:
그래서 사용자 정의 필터를 추가 나는 같은 jetty.xml의 파일을 등록했다 작동하지 않습니까? – gouessej