forked from StellarSend/backend
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcors.rs
More file actions
25 lines (23 loc) · 944 Bytes
/
Copy pathcors.rs
File metadata and controls
25 lines (23 loc) · 944 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use tower_http::cors::{AllowHeaders, AllowMethods, AllowOrigin, CorsLayer};
/// Build the CORS layer from the configured list of allowed origins.
///
/// When `allowed_origins` contains `"*"`, or is empty, every origin is
/// permitted (suitable for development / public APIs). In production, supply
/// an explicit list so that only known origins are whitelisted.
pub fn build_cors_layer(allowed_origins: &[String]) -> CorsLayer {
let allow_origin: AllowOrigin = if allowed_origins.iter().any(|o| o == "*")
|| allowed_origins.is_empty()
{
AllowOrigin::any()
} else {
let headers: Vec<axum::http::HeaderValue> = allowed_origins
.iter()
.filter_map(|o| o.parse().ok())
.collect();
AllowOrigin::list(headers)
};
CorsLayer::new()
.allow_origin(allow_origin)
.allow_methods(AllowMethods::any())
.allow_headers(AllowHeaders::any())
}