Skip to content

Commit 714082c

Browse files
authored
Merge pull request #37 from Tuntii/codex/fix-issue-based-on-discussion-comment
Fix CORS preflight `Access-Control-Allow-Headers` when wildcard configured
2 parents 5620ff3 + d34d394 commit 714082c

1 file changed

Lines changed: 11 additions & 2 deletions

File tree

  • crates/rustapi-extras/src/cors

crates/rustapi-extras/src/cors/mod.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,16 @@ impl MiddlewareLayer for CorsLayer {
195195
) -> Pin<Box<dyn Future<Output = Response> + Send + 'static>> {
196196
let origins = self.origins.clone();
197197
let methods = self.methods_header_value();
198-
let headers = self.headers_header_value();
198+
let allow_headers = if self.headers.len() == 1 && self.headers.first().map(|value| value == "*").unwrap_or(false) {
199+
req.headers()
200+
.get(header::ACCESS_CONTROL_REQUEST_HEADERS)
201+
.and_then(|value| value.to_str().ok())
202+
.filter(|value| !value.trim().is_empty())
203+
.map(str::to_string)
204+
.unwrap_or_else(|| "*".to_string())
205+
} else {
206+
self.headers_header_value()
207+
};
199208
let credentials = self.credentials;
200209
let max_age = self.max_age;
201210
let is_any_origin = matches!(origins, AllowedOrigins::Any);
@@ -256,7 +265,7 @@ impl MiddlewareLayer for CorsLayer {
256265
// Set Allow-Headers
257266
headers_mut.insert(
258267
header::ACCESS_CONTROL_ALLOW_HEADERS,
259-
headers.parse().unwrap(),
268+
allow_headers.parse().unwrap(),
260269
);
261270

262271
// Set Allow-Credentials

0 commit comments

Comments
 (0)