Files
zesdex/crates/zesdex-middleware/src/cors.rs
T

43 lines
1.3 KiB
Rust
Raw Normal View History

//! CORS layer factory for the daemon HTTP (IPC) server.
//!
//! Since the daemon only listens on `127.0.0.1`, the CORS policy is
//! intentionally permissive. These settings are still required because
//! Axum rejects cross-origin requests unless a CORS layer is present.
use tower_http::cors::{AllowHeaders, AllowOrigin, CorsLayer};
/// Return a permissive [`CorsLayer`] for local daemon IPC.
///
/// - **Origin**: any (`*`)
/// - **Methods**: `GET`, `POST`, `PUT`, `DELETE`, `PATCH`, `OPTIONS`
/// - **Headers**: `Content-Type`, `Authorization`, `X-Session-Id`,
/// `X-Request-Id`, `User-Agent`
pub fn default_cors_layer() -> CorsLayer {
CorsLayer::new()
.allow_origin(AllowOrigin::any())
.allow_methods([
"GET".parse().unwrap(),
"POST".parse().unwrap(),
"PUT".parse().unwrap(),
"DELETE".parse().unwrap(),
"PATCH".parse().unwrap(),
"OPTIONS".parse().unwrap(),
])
.allow_headers(AllowHeaders::any())
.expose_headers([
"Content-Type".parse().unwrap(),
"X-Session-Id".parse().unwrap(),
"X-Request-Id".parse().unwrap(),
])
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_default_cors_layer_constructs() {
let _layer = default_cors_layer();
}
}