main: add rocket_cors middleware

This commit is contained in:
Peter Cai 2020-02-21 14:52:23 +08:00
parent 4be4de241f
commit 783873b74d
No known key found for this signature in database
GPG Key ID: 71F5FB4E4F3FD54F
3 changed files with 90 additions and 5 deletions

82
Cargo.lock generated
View File

@ -9,6 +9,15 @@ dependencies = [
"memchr",
]
[[package]]
name = "aho-corasick"
version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "743ad5a418686aad3b87fd14c43badd828cf26e214a00f92a384291cf22e1811"
dependencies = [
"memchr",
]
[[package]]
name = "atty"
version = "0.2.14"
@ -220,7 +229,7 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "400b347fe65ccfbd8f545c9d9a75d04b0caf23fec49aaa838a9a05398f94c019"
dependencies = [
"regex",
"regex 0.2.11",
]
[[package]]
@ -337,7 +346,7 @@ dependencies = [
"time",
"traitobject",
"typeable",
"unicase",
"unicase 1.4.2",
"url",
]
@ -819,13 +828,25 @@ version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9329abc99e39129fcceabd24cf5d85b4671ef7c29c50e972bc5afe32438ec384"
dependencies = [
"aho-corasick",
"aho-corasick 0.6.10",
"memchr",
"regex-syntax",
"thread_local",
"regex-syntax 0.5.6",
"thread_local 0.3.6",
"utf8-ranges",
]
[[package]]
name = "regex"
version = "1.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "322cf97724bea3ee221b78fe25ac9c46114ebb51747ad5babd51a2fc6a8235a8"
dependencies = [
"aho-corasick 0.7.8",
"memchr",
"regex-syntax 0.6.14",
"thread_local 1.0.1",
]
[[package]]
name = "regex-syntax"
version = "0.5.6"
@ -835,6 +856,12 @@ dependencies = [
"ucd-util",
]
[[package]]
name = "regex-syntax"
version = "0.6.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b28dfe3fe9badec5dbf0a79a9cccad2cfc2ab5484bdb3e44cbd1ae8b3ba2be06"
[[package]]
name = "ring"
version = "0.13.5"
@ -910,6 +937,22 @@ dependencies = [
"yansi 0.5.0",
]
[[package]]
name = "rocket_cors"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "270a960cba5a0b7928ad74268db7773ce932da6b550478383cefebe9f46c4e13"
dependencies = [
"log 0.3.9",
"regex 1.3.4",
"rocket",
"serde",
"serde_derive",
"unicase 2.6.0",
"unicase_serde",
"url",
]
[[package]]
name = "rocket_http"
version = "0.4.2"
@ -1041,6 +1084,7 @@ dependencies = [
"lazy_static",
"rocket",
"rocket_contrib",
"rocket_cors",
"rust-crypto",
"scrypt",
"serde",
@ -1122,6 +1166,15 @@ dependencies = [
"lazy_static",
]
[[package]]
name = "thread_local"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14"
dependencies = [
"lazy_static",
]
[[package]]
name = "time"
version = "0.1.42"
@ -1175,6 +1228,25 @@ dependencies = [
"version_check 0.1.5",
]
[[package]]
name = "unicase"
version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6"
dependencies = [
"version_check 0.9.1",
]
[[package]]
name = "unicase_serde"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ef53697679d874d69f3160af80bc28de12730a985d57bdf2b47456ccb8b11f1"
dependencies = [
"serde",
"unicase 2.6.0",
]
[[package]]
name = "unicode-bidi"
version = "0.3.4"

View File

@ -7,6 +7,7 @@ edition = "2018"
[dependencies]
rocket = "0.4.2"
rocket_contrib = { version = "0.4.2", features = ["diesel_sqlite_pool"] }
rocket_cors = "0.5.1"
jwt = "0.4.0"
diesel = { version = "1.4.3", features = ["sqlite", "chrono"] }
diesel_migrations = "1.4.0"

View File

@ -4,6 +4,7 @@
extern crate rocket;
#[macro_use]
extern crate rocket_contrib;
extern crate rocket_cors;
#[macro_use]
extern crate diesel;
#[macro_use]
@ -110,7 +111,18 @@ fn run_db_migrations(rocket: Rocket) -> Rocket {
}
pub fn build_rocket() -> Rocket {
// Make CORS options
let cors = rocket_cors::CorsOptions {
allowed_origins: rocket_cors::AllowedOrigins::All,
allowed_methods: vec![rocket::http::Method::Get, rocket::http::Method::Post]
.into_iter().map(From::from).collect(),
allowed_headers: rocket_cors::AllowedHeaders::all(),
send_wildcard: true,
..Default::default()
}.to_cors().unwrap();
let r = rocket::custom(build_config())
.attach(cors)
.attach(DbConn::fairing())
.mount("/", api::routes());
run_db_migrations(r)