use rocket::fairing::{Fairing, Info, Kind};
use rocket::http::{Header, Method, Status};
use rocket::{Request, Response};
pub struct CORS;
#[rocket::async_trait]
impl Fairing for CORS {
fn info(&self) -> Info {
Info {
name: "CORS Policy",
kind: Kind::Response,
}
}
async fn on_response<'r>(&self, request: &'r Request<'_>, response: &mut Response<'r>) {
if request.method() == Method::Options {
response.set_status(Status::NoContent);
response.set_header(Header::new(
"Access-Control-Allow-Methods",
"POST, PUT, GET, DELETE",
));
response.set_header(Header::new("Access-Control-Allow-Headers", "*"));
}
response.set_header(Header::new("Access-Control-Allow-Origin", "*"));
response.set_header(Header::new("Access-Control-Allow-Credentials", "true"));
}
}