CORS

El Intercambio de recursos entre Orígenes (CORS) puede ser usado por Cross-Origin Resource SharingAbrir en una Nueva Ventana.

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::listAbrir en una Nueva Ventana).

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"