omni_orchestrator/
cors.rs

1use rocket::{Request, Response, fairing::{Fairing, Info, Kind}, http::Header};
2
3pub struct CORS;
4
5#[rocket::async_trait]
6impl Fairing for CORS {
7    fn info(&self) -> Info {
8        Info {
9            name: "Add comprehensive CORS headers to responses",
10            kind: Kind::Response,
11        }
12    }
13
14    async fn on_response<'r>(&self, _request: &'r Request<'_>, response: &mut Response<'r>) {
15        response.set_header(Header::new("Access-Control-Allow-Origin", "*"));
16        response.set_header(Header::new(
17            "Access-Control-Allow-Methods",
18            "GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD",
19        ));
20        response.set_header(Header::new(
21            "Access-Control-Allow-Headers",
22            "Authorization, Content-Type, Accept, Origin, X-Requested-With",
23        ));
24        response.set_header(Header::new("Access-Control-Allow-Credentials", "true"));
25        response.set_header(Header::new("Access-Control-Max-Age", "86400"));
26    }
27}
28
29#[options("/<_..>")]
30pub fn cors_preflight() -> &'static str {
31    ""
32}