Add CORS middleware to v1

This commit is contained in:
2026-01-07 15:24:10 -03:00
parent 245adccf23
commit 57eeb0878c
+19 -5
View File
@@ -5,7 +5,8 @@ use std::sync::Arc;
use axum::{ use axum::{
Json, Router, Json, Router,
body::{Body, Bytes}, body::{Body, Bytes},
extract::{Query, State as AxumState}, extract::{Query, Request, State as AxumState},
middleware::Next,
response::{Redirect, Response}, response::{Redirect, Response},
routing::get, routing::get,
}; };
@@ -26,6 +27,7 @@ pub fn router() -> Router<Arc<State>> {
.route("/proxy", get(proxy_with_cors)) .route("/proxy", get(proxy_with_cors))
.fallback(error_404) .fallback(error_404)
.method_not_allowed_fallback(error_405) .method_not_allowed_fallback(error_405)
.layer(axum::middleware::from_fn(cors_middleware))
} }
async fn error_404() -> Error { async fn error_404() -> Error {
@@ -42,6 +44,22 @@ async fn error_405() -> Error {
} }
} }
async fn cors_middleware(req: Request, next: Next) -> Response {
let mut response = next.run(req).await;
let headers = response.headers_mut();
// Insert CORS headers
headers.insert("access-control-allow-origin", "*".parse().unwrap());
headers.insert(
"access-control-allow-methods",
"GET, OPTIONS".parse().unwrap(),
);
headers.insert("access-control-allow-headers", "*".parse().unwrap());
response
}
#[derive(Debug, Serialize, Encode, Decode)] #[derive(Debug, Serialize, Encode, Decode)]
struct Profile { struct Profile {
username: String, username: String,
@@ -336,10 +354,6 @@ async fn proxy_with_cors(Query(params): Query<ProxyQuery>) -> Result<Response, E
} }
headers_mut.insert(key, value.clone()); headers_mut.insert(key, value.clone());
} }
// Insert CORS headers
headers_mut.insert("access-control-allow-origin", "*".parse().unwrap());
headers_mut.insert("access-control-allow-methods", "GET, OPTIONS".parse().unwrap());
headers_mut.insert("access-control-allow-headers", "*".parse().unwrap());
Ok(response.body(body).unwrap()) Ok(response.body(body).unwrap())
} }