我正在尝试根据休息调用的路径实现自定义选项响应。
例如我有:
rest("/employee/login").id("employee-login-options")
.verb("options").route()
.setHeader("Access-Control-Allow-Origin", constant("https://example.com"))
.setHeader("Access-Control-Allow-Credentials", constant(true))
.setHeader("Access-Control-Allow-Methods", constant("GET, HEAD, POST, PUT, DELETE, OPTIONS"))
.setHeader("Access-Control-Allow-Headers", constant("Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, Authorization"))
.setHeader("Allow", constant("GET, HEAD, POST, PUT, DELETE, OPTIONS"));
rest("/login").id("login-options")
.verb("options").route()
.setHeader("Access-Control-Allow-Origin", constant("*"))
.setHeader("Access-Control-Allow-Methods", constant("GET, HEAD, POST, PUT, DELETE, OPTIONS"))
.setHeader("Access-Control-Allow-Headers", constant("Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers"))
.setHeader("Allow", constant("GET, HEAD, POST, PUT, DELETE, OPTIONS"));
Run Code Online (Sandbox Code Playgroud)
因此,一条路由允许凭据并具有特定域,另一条路由则使用通配符进行响应。
我遇到的问题是他们都没有被调用。我可以看到客户端发出 OPTIONS 请求,但它没有命中我的路线。
我已经配置了我的其余配置,如下所示:
restConfiguration()
.component("jetty")
.scheme(JETTY_SCHEME)
.port(JETTY_PORT);
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
restConfiguration()
.component("jetty")
.scheme(JETTY_SCHEME)
.port(JETTY_PORT)
.enableCORS(true)
.corsAllowCredentials(true)
.corsHeaderProperty("Access-Control-Allow-Origin","https://hello.3en.codes")
.corsHeaderProperty("Access-Control-Allow-Headers","Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, Authorization");
Run Code Online (Sandbox Code Playgroud)
但是,这仅适用于一条路线,并且我无法在每个路线的基础上覆盖标头 …