CORS
El Intercambio de recursos entre Orígenes (CORS) puede ser usado por Cross-Origin Resource Sharing.
Los navegadores modernos pueden bloquear las peticiones a diferentes dominios a menos que el dominio tenga habilitado el CORS. Éste middleware puede agregar la propiedad en las cabeceras para permitir peticiones desde dominios específico (Puedes permitir múltiples dominios con la instancia de la función AllowOrigin::list
).
Ejemplo
use salvo::cors::Cors;
use salvo::http::Method;
use salvo::prelude::*;
#[handler]
async fn hello() -> &'static str {
"hello"
}
#[tokio::main]
async fn main() {
tracing_subscriber::fmt().init();
let cors = Cors::new()
.allow_origin("https://salvo.rs")
.allow_methods(vec![Method::GET, Method::POST, Method::DELETE])
.into_handler();
let router = Router::new().get(hello);
let service = Service::new(router).hoop(cors);
let acceptor = TcpListener::new("127.0.0.1:5800").bind().await;
Server::new(acceptor).serve(service).await;
}
[package]
name = "example-cors"
version = "0.1.0"
edition = "2021"
publish = false
[dependencies]
salvo = { workspace = true, features=["cors"] }
tokio = { version = "1", features = ["macros"] }
tracing = "0.1"
tracing-subscriber = "0.3"