Forzare HTTPS

Il middleware force-https può reindirizzare tutte le richieste per utilizzare il protocollo HTTPS.

Se questo middleware viene applicato a un Router, imporrà il reindirizzamento del protocollo solo quando una rotta corrisponde. Se una pagina non esiste, non avverrà alcun reindirizzamento.

Tuttavia, un requisito più comune è reindirizzare automaticamente qualsiasi richiesta, anche quando la rotta non corrisponde e restituisce un errore 404. In questi casi, il middleware può essere aggiunto al Service. Il middleware aggiunto al Service verrà sempre eseguito, indipendentemente dal fatto che la richiesta venga corrisposta con successo da una rotta.

Codice di Esempio

main.rs
Cargo.toml
use salvo::conn::rustls::{Keycert, RustlsConfig};
use salvo::prelude::*;

#[handler]
async fn hello() -> &'static str {
    "Hello World"
}

#[tokio::main]
async fn main() {
    tracing_subscriber::fmt().init();

    let router = Router::new().get(hello);
    let service = Service::new(router).hoop(ForceHttps::new().https_port(5443));

    let config = RustlsConfig::new(
        Keycert::new()
            .cert(include_bytes!("../certs/cert.pem").as_ref())
            .key(include_bytes!("../certs/key.pem").as_ref()),
    );
    let acceptor = TcpListener::new("0.0.0.0:5443")
        .rustls(config)
        .join(TcpListener::new("0.0.0.0:8698"))
        .bind()
        .await;
    Server::new(acceptor).serve(service).await;
}