小编Mar*_*man的帖子

带有嵌入式Jetty的Cross Origin Filter

我正在尝试让CrossOriginFilter与几个嵌入式Jetty服务器一起工作,这两个服务器都运行在我们的内部网络上.两者都在运行servlet,但我需要服务器A的网页才能发布到服务器B的servlet.我想我需要将ACCESS_CONTROL_ALLOW_ORIGIN添加到CrossOriginFilter,但是找不到如何使用没有web.xml的嵌入式Jetty实例来证明这一点并不容易.尝试访问服务器b的serlvets时,我在浏览器中收到以下错误消息

No 'Access-Control-Allow-Origin' header is present on the requested resource
Run Code Online (Sandbox Code Playgroud)

我使用angularjs发布到控制器中的其他服务器的servlet.

这是其中一个服务器的代码(两者都差不多)

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();
Run Code Online (Sandbox Code Playgroud)

jetty

3
推荐指数
1
解决办法
9304
查看次数

标签 统计

jetty ×1