From e7cbe2560259e4c8ec98a5424fd072d13acd3906 Mon Sep 17 00:00:00 2001 From: "Sebastian H. Gabrielli" Date: Tue, 26 Dec 2023 21:01:36 +0100 Subject: [PATCH] Handle CORS --- Cargo.lock | 37 +++++++++++++++++++++++++++++++++++++ Cargo.toml | 3 ++- src/main.rs | 15 ++++++++++++++- 3 files changed, 53 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 989d880..f444400 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1783,6 +1783,7 @@ version = "0.1.0" dependencies = [ "futures", "rocket", + "rocket_cors", "sea-orm", "serde", ] @@ -1804,6 +1805,23 @@ dependencies = [ "version_check", ] +[[package]] +name = "rocket_cors" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfac3a1df83f8d4fc96aa41dba3b86c786417b7fc0f52ec76295df2ba781aa69" +dependencies = [ + "http", + "log", + "regex", + "rocket", + "serde", + "serde_derive", + "unicase", + "unicase_serde", + "url", +] + [[package]] name = "rocket_http" version = "0.5.0" @@ -2782,6 +2800,25 @@ dependencies = [ "version_check", ] +[[package]] +name = "unicase" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicase_serde" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ef53697679d874d69f3160af80bc28de12730a985d57bdf2b47456ccb8b11f1" +dependencies = [ + "serde", + "unicase", +] + [[package]] name = "unicode-bidi" version = "0.3.14" diff --git a/Cargo.toml b/Cargo.toml index 7dd3246..75088c6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,4 +9,5 @@ edition = "2021" rocket = {version = "0.5.0", features = ["json"] } serde = { version = "1.0", features = ["derive"] } sea-orm = { version = "^0.12.0", features = [ "sqlx-sqlite", "runtime-tokio-native-tls", "macros", "mock" ] } -futures = "0.3.28" \ No newline at end of file +futures = "0.3.28" +rocket_cors = "0.6.0" \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index bde83f0..7464684 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,12 +1,21 @@ // Webserver #[macro_use] extern crate rocket; -mod database; + +// Import the data models pub mod models; + +// Import the database setup +mod database; use database::set_up_db; +// Import the member functions mod webserver_member; use webserver_member::*; +// Handle CORS +use rocket_cors::{AllowedOrigins, CorsOptions}; + +// Serve the very exiting main page #[get("/")] fn index() -> &'static str { "Hello, world!\nNothing useful is served here." @@ -19,8 +28,12 @@ async fn rocket() -> _ { Err(err) => panic!("{}", err) }; + let cors = CorsOptions::default().allowed_origins(AllowedOrigins::all()) + .to_cors().unwrap(); + rocket::build() .manage(db) + .attach(cors) .mount("/", routes![ index, get_member_by_id,