algohub_server/
cors.rs

1use rocket::fairing::{Fairing, Info, Kind};
2use rocket::http::{Header, Method, Status};
3use rocket::{Request, Response};
4
5pub struct CORS;
6
7#[rocket::async_trait]
8impl Fairing for CORS {
9    fn info(&self) -> Info {
10        Info {
11            name: "CORS Policy",
12            kind: Kind::Response,
13        }
14    }
15
16    async fn on_response<'r>(&self, request: &'r Request<'_>, response: &mut Response<'r>) {
17        if request.method() == Method::Options {
18            response.set_status(Status::NoContent);
19            response.set_header(Header::new(
20                "Access-Control-Allow-Methods",
21                "POST, PUT, GET, DELETE",
22            ));
23            response.set_header(Header::new("Access-Control-Allow-Headers", "*"));
24        }
25
26        response.set_header(Header::new("Access-Control-Allow-Origin", "*"));
27        response.set_header(Header::new("Access-Control-Allow-Credentials", "true"));
28    }
29}