Skip to main content

rustbasic_core/middleware/
cors.rs

1use crate::{Request, Response, Next};
2use crate::http::{Method, StatusCode};
3
4pub async fn cors_middleware(req: Request, next: Next) -> Response {
5    if req.method == Method::OPTIONS {
6        return crate::http::Response::builder()
7            .status(StatusCode::OK)
8            .header("access-control-allow-origin", "*")
9            .header("access-control-allow-methods", "GET, POST, PUT, DELETE, OPTIONS")
10            .header("access-control-allow-headers", "*")
11            .body(Vec::new())
12            .unwrap();
13    }
14
15    let mut res: Response = next.run(req).await;
16    let headers = res.headers_mut();
17    headers.insert("access-control-allow-origin", "*".parse().unwrap());
18    headers.insert("access-control-allow-methods", "GET, POST, PUT, DELETE, OPTIONS".parse().unwrap());
19    headers.insert("access-control-allow-headers", "*".parse().unwrap());
20    res
21}