Updating CORS to be more restrictive
This commit is contained in:
committed by
Sparsh Goenka
parent
8a1b9bf603
commit
a9ef92721f
30
src/main.rs
30
src/main.rs
@@ -1,6 +1,8 @@
|
|||||||
mod board;
|
mod board;
|
||||||
mod game;
|
mod game;
|
||||||
use axum::Router;
|
use std::env;
|
||||||
|
|
||||||
|
use axum::{http::Method, Router};
|
||||||
use board::Board;
|
use board::Board;
|
||||||
use dotenv::dotenv;
|
use dotenv::dotenv;
|
||||||
use futures_util::stream::StreamExt;
|
use futures_util::stream::StreamExt;
|
||||||
@@ -16,7 +18,7 @@ use socketioxide::{
|
|||||||
};
|
};
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
use tokio::net::TcpListener;
|
use tokio::net::TcpListener;
|
||||||
use tower_http::cors::CorsLayer;
|
use tower_http::cors::{AllowOrigin, CorsLayer};
|
||||||
use tracing_subscriber::FmtSubscriber;
|
use tracing_subscriber::FmtSubscriber;
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
@@ -34,9 +36,27 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
let (layer, io) = SocketIo::builder().with_state(pool).build_layer();
|
let (layer, io) = SocketIo::builder().with_state(pool).build_layer();
|
||||||
|
|
||||||
io.ns("/", on_connect);
|
io.ns("/", on_connect);
|
||||||
let app = Router::new()
|
// Get the allowed origins from the .env file
|
||||||
.layer(layer)
|
let allowed_origins = env::var("ALLOWED_ORIGINS").expect("ALLOWED_ORIGINS must be set");
|
||||||
.layer(CorsLayer::very_permissive());
|
|
||||||
|
// Split the origins by comma and collect them into a vector
|
||||||
|
let origins: Vec<String> = allowed_origins
|
||||||
|
.split(',')
|
||||||
|
.map(|s| s.trim().to_string())
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
// Convert the vector of strings into `AllowOrigin`
|
||||||
|
let allow_origin = AllowOrigin::list(origins.iter().map(|origin| origin.parse().unwrap()));
|
||||||
|
|
||||||
|
// Create a CORS layer
|
||||||
|
let cors = CorsLayer::new().allow_origin(allow_origin).allow_methods([
|
||||||
|
Method::GET,
|
||||||
|
Method::POST,
|
||||||
|
Method::PUT,
|
||||||
|
Method::DELETE,
|
||||||
|
]);
|
||||||
|
|
||||||
|
let app = Router::new().layer(layer).layer(cors);
|
||||||
|
|
||||||
let listener = TcpListener::bind("0.0.0.0:3000").await?;
|
let listener = TcpListener::bind("0.0.0.0:3000").await?;
|
||||||
println!("listening on {}", listener.local_addr()?);
|
println!("listening on {}", listener.local_addr()?);
|
||||||
|
Reference in New Issue
Block a user