use std::time::Duration;
use http::HeaderName;
use tonic::Status;
use tower_http::cors::{AllowOrigin, CorsLayer};
const DEFAULT_MAX_AGE: Duration = Duration::from_secs(24 * 60 * 60);
const DEFAULT_EXPOSED_HEADERS: [HeaderName; 3] =
[Status::GRPC_STATUS, Status::GRPC_MESSAGE, Status::GRPC_STATUS_DETAILS];
const DEFAULT_ALLOW_HEADERS: [HeaderName; 4] = [
HeaderName::from_static("x-grpc-web"),
http::header::CONTENT_TYPE,
HeaderName::from_static("x-user-agent"),
HeaderName::from_static("grpc-timeout"),
];
pub fn cors_for_grpc_web_layer() -> CorsLayer {
CorsLayer::new()
.allow_origin(AllowOrigin::mirror_request())
.allow_credentials(true)
.max_age(DEFAULT_MAX_AGE)
.expose_headers(DEFAULT_EXPOSED_HEADERS)
.allow_headers(DEFAULT_ALLOW_HEADERS)
}