Skip to content

Commit b35fa56

Browse files
fix(rpc): move CORS layer above AcceptHeaderLayer (#1707)
* fix(rpc): move CORS layer above AcceptHeaderLayer When AcceptHeaderLayer rejects a request due to an unsupported SDK version, it short-circuits the response via futures::future::ready() which bypasses all downstream middleware. Since the CORS layer was below AcceptHeaderLayer, rejection responses had no CORS headers, causing browsers to block the error entirely. * chore: add changelog entry for CORS layer fix * chore: move changelog entry to v0.13.6 (TBD) * Update crates/rpc/src/server/mod.rs Co-authored-by: Mirko <48352201+Mirko-von-Leipzig@users.noreply.github.com> * Update CHANGELOG.md Co-authored-by: Mirko <48352201+Mirko-von-Leipzig@users.noreply.github.com> --------- Co-authored-by: Mirko <48352201+Mirko-von-Leipzig@users.noreply.github.com>
1 parent 3b10866 commit b35fa56

2 files changed

Lines changed: 8 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
## v0.13.6 (TBD)
4+
5+
- Fixed CORS headers missing from version-rejection responses ([#1707](https://github.com/0xMiden/node/pull/1707)).
6+
37
## v0.13.5 (2026-02-19)
48

59
- OpenTelemetry traces are now flushed before program termination on panic ([#1643](https://github.com/0xMiden/miden-node/pull/1643)).

crates/rpc/src/server/mod.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,15 @@ impl Rpc {
8484
.layer(CatchPanicLayer::custom(catch_panic_layer_fn))
8585
.layer(TraceLayer::new_for_grpc().make_span_with(grpc_trace_fn))
8686
.layer(HealthCheckLayer)
87+
// Note: must come before the accept layer, as otherwise accept rejections
88+
// do _not_ get CORS headers applied, masking the accept error in
89+
// web-clients (which would experience CORS rejection).
90+
.layer(cors_for_grpc_web_layer())
8791
.layer(
8892
AcceptHeaderLayer::new(&rpc_version, genesis.commitment())
8993
.with_genesis_enforced_method("SubmitProvenTransaction")
9094
.with_genesis_enforced_method("SubmitProvenBatch"),
9195
)
92-
.layer(cors_for_grpc_web_layer())
9396
// Enables gRPC-web support.
9497
.layer(GrpcWebLayer::new())
9598
.add_service(api_service)

0 commit comments

Comments
 (0)