diff --git a/rpc/Cargo.toml b/rpc/Cargo.toml index 92ddfa98b6..dec4dc6c78 100644 --- a/rpc/Cargo.toml +++ b/rpc/Cargo.toml @@ -45,7 +45,7 @@ async-trait = "0.1" axum = "0.6.20" tokio-util = { version = "0.7.3", features = ["codec"] } futures-util = { version = "0.3.21" } -tower-http = { version = "0.3.5", features = ["timeout"] } +tower-http = { version = "0.3.5", features = ["timeout", "cors"] } async-stream = "0.3.3" ckb-async-runtime = { path = "../util/runtime", version = "= 0.113.0" } diff --git a/rpc/src/server.rs b/rpc/src/server.rs index 08550d9730..6d943211d5 100644 --- a/rpc/src/server.rs +++ b/rpc/src/server.rs @@ -17,6 +17,7 @@ use std::sync::Arc; use std::time::Duration; use tokio::net::TcpListener; use tokio_util::codec::{FramedRead, FramedWrite, LinesCodec, LinesCodecError}; +use tower_http::cors::CorsLayer; use tower_http::timeout::TimeoutLayer; #[doc(hidden)] @@ -84,6 +85,7 @@ impl RpcServer { enable_websocket: bool, ) -> Result { let stream_config = StreamServerConfig::default() + .with_keep_alive(true) .with_channel_size(4) .with_pipeline_size(4); @@ -94,6 +96,7 @@ impl RpcServer { .route("/", method_router.clone()) .route("/*path", method_router) .layer(Extension(Arc::clone(rpc))) + .layer(CorsLayer::permissive()) .layer(TimeoutLayer::new(Duration::from_secs(30))); if enable_websocket {