From fe2bb23324307f31d646c2d59a468c14d604d0dd Mon Sep 17 00:00:00 2001 From: Gabriel Kaszewski Date: Thu, 27 Jun 2024 23:38:47 +0200 Subject: [PATCH] add cors --- backend/Cargo.lock | 25 ++++++++++++++++++++++++- backend/Cargo.toml | 1 + backend/src/main.rs | 13 +++++++++++-- 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/backend/Cargo.lock b/backend/Cargo.lock index 5504e9e..7d57a17 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -129,6 +129,12 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + [[package]] name = "bytemuck" version = "1.14.0" @@ -634,7 +640,7 @@ version = "0.16.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c3287920cb847dee3de33d301c463fba14dda99db24214ddf93f83d3021f4c6" dependencies = [ - "bitflags", + "bitflags 1.3.2", "crc32fast", "deflate", "miniz_oxide 0.3.7", @@ -681,6 +687,7 @@ dependencies = [ "maud", "qrcode", "tokio", + "tower-http", ] [[package]] @@ -898,6 +905,22 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower-http" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" +dependencies = [ + "bitflags 2.6.0", + "bytes", + "http", + "http-body", + "http-body-util", + "pin-project-lite", + "tower-layer", + "tower-service", +] + [[package]] name = "tower-layer" version = "0.3.2" diff --git a/backend/Cargo.toml b/backend/Cargo.toml index d8429e8..8110164 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -10,3 +10,4 @@ tokio = { version = "1.33.0", features = ["macros", "rt-multi-thread"] } qrcode = "0.12.0" image = "0.23.14" maud = { version = "0.26.0", features = ["axum"] } +tower-http = { version = "0.5.2", features = ["cors"] } diff --git a/backend/src/main.rs b/backend/src/main.rs index 08c0506..eb163ce 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -3,19 +3,28 @@ use std::collections::HashMap; use axum::{ debug_handler, extract::Query, - http::{header::CONTENT_TYPE, StatusCode}, + http::{header::CONTENT_TYPE, HeaderValue, Method, StatusCode}, response::IntoResponse, routing::get, Router, }; use image::{png::PngEncoder, ColorType, Luma}; use maud::{html, Markup}; +use tower_http::cors::CorsLayer; #[tokio::main] async fn main() { let app = Router::new() .route("/", get(index)) - .route("/qr", get(get_qr_code)); + .route("/qr", get(get_qr_code)) + .layer( + CorsLayer::new() + .allow_origin("http://localhost:3000".parse::().unwrap()) + .allow_origin("http://localhost".parse::().unwrap()) + .allow_origin("http://localhost:5173".parse::().unwrap()) + .allow_origin("http://localhost:1337".parse::().unwrap()) + .allow_methods([Method::GET]), + ); let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();