Add CORS middleware to v1
This commit is contained in:
+19
-5
@@ -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<Arc<State>> {
|
||||
.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<ProxyQuery>) -> Result<Response, E
|
||||
}
|
||||
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())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user