跨域问题:在 Karaf 环境中使用 Jetty 的 Camel Swagger

Cross Domain Issue : Camel Swagger with Jetty in a Karaf Environment

我在 OSGi 环境项目中工作。我发现 camel 提供了 swagger 的集成。所以我用过它。它运行良好,直到用 swagger UI.

发起请求

我的意思是当我输入 swagger ui 我用 camel-swagger-java 定义的 uri 时,它起作用了。 Swagger 发现了我的 api !

但是当我想用 swagger ui 发起请求时,我遇到了一些跨域请求问题。

我找到了几个解决方案: - 第一个有骆驼休息

restConfiguration().component("jetty").bindingMode(RestBindingMode.json)
        .dataFormatProperty("prettyPrint", "true")
        .contextPath("/").port(8080).apiContextPath("/api-doc/login").apiProperty("api.title", "Login API").apiProperty("api.version", "1.0.0-SNAPSHOT")
        .apiProperty("cors", "true").apiProperty("apiContextIdListing", "true");

我已经设置为 true cors 属性。但是并没有解决我的问题。然后经过一番搜索,我发现可能是禁止跨域请求的jetty。但是至此,我还没有找到如何在 OSGi 环境 (Karaf / Fellix) 中配置 Jetty 来接受这种请求。

感谢您的帮助

我找到了解决办法。使用 Camel,我必须为每个服务创建 OPTIONS Rest 接口。它很脏(http://camel.465427.n5.nabble.com/Workaround-with-REST-DSL-to-avoid-HTTP-method-not-allowed-405-td5771508.html)。所以我使用了这个解决方案:github.com/swagger-api/swagger-ui/issues/1888