在Axum路由器中使用CorsLayer时,需要将其添加为路由器的中间件之一,并将其作为第一个中间件添加。示例代码如下:
use axum::{handler::get, Router};
use axum_cors::CorsLayer;
let cors_middleware = CorsLayer::default()
.allow_any_origin()
.allow_any_method()
.allow_any_header()
.allow_credentials(false)
.expose_headers(vec!["My-Custom-Header"]);
let app = Router::new()
.nest("/api", axum::service::get(
get(|| async { "Hello World!" }),
))
.layer(cors_middleware);
// ...
请注意,在上面的示例中,CorsLayer是作为第一个中间件添加到Axum路由器中的,这是非常重要的。如果将其添加为其他中间件的子级,则Axum路由器仍然可能会拒绝CORS OPTIONS预检请求。