use rocket::fs::NamedFile; use rocket::http::Method; use rocket_cors::{AllowedHeaders, AllowedOrigins, Cors, CorsOptions}; use std::io; use std::path::{Path, PathBuf}; use local_ip_address::local_ip; pub fn make_cors() -> Cors { let allowed_origins = AllowedOrigins::some_exact(&[ "http://localhost:3000", "http://127.0.0.1:3000", &format!("http://{}:8000",local_ip().unwrap())[..], "http://localhost:8000", "http://0.0.0.0:8000", ]); CorsOptions { allowed_origins, allowed_methods: vec![Method::Get].into_iter().map(From::from).collect(), // 1. allowed_headers: AllowedHeaders::some(&[ "Authorization", "Accept", "Access-Control-Allow-Origin", ]), allow_credentials: true, ..Default::default() } .to_cors() .expect("error while building CORS") } #[get("/", rank = 10)] pub async fn files(file: PathBuf) -> Option { NamedFile::open(Path::new("../frontend/build/").join(file)) .await .ok() } #[get("/")] pub async fn index() -> io::Result { NamedFile::open("../frontend/build/index.html").await }