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}