Java Dropwizard 0.8-启用CORS

Java Dropwizard 0.8-启用CORS,java,cors,dropwizard,Java,Cors,Dropwizard,有人知道如何为dropwizard 0.8启用CORS吗?我只能找到有关版本0.7的信息 显然这不管用 FilterRegistration.Dynamic filter = environment.servlets().addFilter( "CORS", CrossOriginFilter.class); // Add URL mapping filter.addMappingForUrlPatterns(EnumSet.all

有人知道如何为dropwizard 0.8启用CORS吗?我只能找到有关版本0.7的信息

显然这不管用

FilterRegistration.Dynamic filter = environment.servlets().addFilter(
                "CORS", CrossOriginFilter.class);
        // Add URL mapping
        filter.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class),
                true, "/*");
        filter.setInitParameter(CrossOriginFilter.ALLOWED_METHODS_PARAM,
                "GET,PUT,POST,DELETE,OPTIONS");
        filter.setInitParameter(CrossOriginFilter.ALLOWED_ORIGINS_PARAM, "*");
        filter.setInitParameter(
                CrossOriginFilter.ACCESS_CONTROL_ALLOW_ORIGIN_HEADER, "*");
        filter.setInitParameter("allowedHeaders",
                "Content-Type,Authorization,X-Requested-With,Content-Length,Accept,Origin");
        filter.setInitParameter("allowCredentials", "true");

上述措施应该有效。我写了一篇关于单元测试的工作要点:它是针对0.8.1和0.9.0-SNAPSHOT进行测试的。将其作为引用运行

如果您有问题,请尝试将日志级别设置为@elec建议的调试级别:

loggers:
   org.eclipse.jetty.servlets: DEBUG
当CrossOriginFilter初始化时,它应打印出以下日志条目:

DEBUG [2015-05-07 11:55:39,247] org.eclipse.jetty.servlets.CrossOriginFilter: Cross-origin filter configuration: allowedOrigins = *, allowedMethods = GET,PUT,POST,DELETE,OPTIONS, allowedHeaders = Origin, Content-Type, Accept, Authorization, preflightMaxAge = 1800, allowCredentials = true,exposedHeaders = ,chainPreflight = true

我已经为此挣扎了将近一周,我将在这里发布我的代码,对于那些感兴趣的人,基本上步骤是相同的: 1.在应用程序类中包含此项 final FilterRegistration.Dynamic filter=environment.servlets().addFilter(“CORSFilter”,CrossOriginFilter.class)

  • 在当前资源上提供响应时,请明确包含您的选项

    return Response.status(status)
            .entity(new MessageResponse(this.counter.incrementAndGet(), message, response))
            .header("Access-Control-Allow-Origin", origin.isPresent() ? origin.get():"*")
            .header("Access-Control-Allow-Methods", methods)
            .header("Access-Control-Allow-Headers", "Content-Type, header-task")
            .type(MediaType.APPLICATION_JSON)
            .encoding("UTF-8")
            .allow(allow)
            .build();
    

  • 您是否尝试将org.eclipse.jetty.servlet的日志级别设置为调试?
    return Response.status(status)
            .entity(new MessageResponse(this.counter.incrementAndGet(), message, response))
            .header("Access-Control-Allow-Origin", origin.isPresent() ? origin.get():"*")
            .header("Access-Control-Allow-Methods", methods)
            .header("Access-Control-Allow-Headers", "Content-Type, header-task")
            .type(MediaType.APPLICATION_JSON)
            .encoding("UTF-8")
            .allow(allow)
            .build();