diff --git a/src/handlers/v1/mod.rs b/src/handlers/v1/mod.rs index 479262d..13f1c8e 100644 --- a/src/handlers/v1/mod.rs +++ b/src/handlers/v1/mod.rs @@ -5,7 +5,8 @@ use std::sync::Arc; use axum::{ Json, Router, body::{Body, Bytes}, - extract::{Query, State as AxumState}, + extract::{Query, Request, State as AxumState}, + middleware::Next, response::{Redirect, Response}, routing::get, }; @@ -26,6 +27,7 @@ pub fn router() -> Router> { .route("/proxy", get(proxy_with_cors)) .fallback(error_404) .method_not_allowed_fallback(error_405) + .layer(axum::middleware::from_fn(cors_middleware)) } 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)] struct Profile { username: String, @@ -336,10 +354,6 @@ async fn proxy_with_cors(Query(params): Query) -> Result