1
0
Fork 0
mirror of https://github.com/SinTan1729/chhoto-url synced 2025-04-15 01:47:40 -05:00

chg: Add correct CORS to routes

This commit is contained in:
Solninja A 2025-01-24 13:26:32 +10:00
parent f283991740
commit d7204d6622
3 changed files with 29 additions and 0 deletions

17
actix/Cargo.lock generated
View file

@ -19,6 +19,21 @@ dependencies = [
"tracing",
]
[[package]]
name = "actix-cors"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f9e772b3bcafe335042b5db010ab7c09013dad6eac4915c91d8d50902769f331"
dependencies = [
"actix-utils",
"actix-web",
"derive_more 0.99.18",
"futures-util",
"log",
"once_cell",
"smallvec",
]
[[package]]
name = "actix-files"
version = "0.6.6"
@ -479,6 +494,7 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
name = "chhoto-url"
version = "5.6.1"
dependencies = [
"actix-cors",
"actix-files",
"actix-session",
"actix-web",
@ -738,6 +754,7 @@ dependencies = [
"futures-task",
"pin-project-lite",
"pin-utils",
"slab",
]
[[package]]

View file

@ -29,6 +29,7 @@ categories = ["web-programming"]
[dependencies]
actix-web = "4.5.1"
actix-files = "0.6.5"
actix-cors = "0.7.0"
rusqlite = { version = "0.32.0", features = ["bundled"] }
regex = "1.10.3"
rand = "0.8.5"

View file

@ -4,6 +4,7 @@
use actix_files::Files;
use actix_session::{storage::CookieSessionStore, SessionMiddleware};
use actix_web::{cookie::Key, middleware, web, App, HttpServer};
use actix_cors::Cors;
use rusqlite::Connection;
use std::{env, io::Result};
@ -40,6 +41,7 @@ async fn main() -> Result<()> {
.ok()
.filter(|s| !s.trim().is_empty());
// If an API key is set, check the security
if let Ok(key) = env::var("api_key") {
if !auth::is_key_secure() {
@ -82,9 +84,18 @@ async fn main() -> Result<()> {
// Actually start the server
HttpServer::new(move || {
// Define cors
let cors = Cors::default()
.allow_any_origin()
.supports_credentials()
.allowed_methods(vec!["GET", "POST", "DELETE"])
.allowed_header("X-API-Key")
.max_age(3600);
App::new()
.wrap(middleware::Logger::default())
.wrap(middleware::Compress::default())
.wrap(cors)
.wrap(
SessionMiddleware::builder(CookieSessionStore::default(), secret_key.clone())
.cookie_same_site(actix_web::cookie::SameSite::Strict)