#javascript #middleware #alert #axum #user #disable #applications

axum_js_advice

This project allows you to includes a custom middleware that injects a JavaScript alert in your axum application, advising users to disable JavaScript for enhanced security

1 stable release

new 1.0.2 Jan 16, 2025

#901 in HTTP server

Download history

51 downloads per month

GPL-3.0 license

20KB

Axum JS Advice Middleware

This project allows you to includes a custom middleware that injects a JavaScript alert in your axum application, advising users to disable JavaScript for enhanced security.

Features

  • Custom Middleware: Adds an HTML <script> tag to responses, displaying a warning pop-up if JavaScript is enabled.
  • Request and Response Buffering: Reads and modifies HTTP request/response bodies to include the custom script.
  • Minimal Setup: Built with simplicity in mind using axum and tokio.

How It Works

The middleware intercepts responses and appends a JavaScript alert to the body. The alert advises users to disable JavaScript for their safety.

Example Warning Script Injected:

<script>
alert("Warning!\nYou have JavaScript enabled, you are putting yourself at risk!\nPlease disable it immediately!");
</script>

Usage

cargo add axum_js_advice

Then, add axum_js_advice() in your middleware layer, for example:

use axum::{middleware, Router};
use axum_js_advice::js_advice;

#[tokio::main]
async fn main() {
    let app = Router::new()
        .route(
            "/",
            axum::routing::get(|| async move { axum::response::Html("Hello from `POST /`") }),
        )
        //.layer(middleware::from_fn(OTHER_MIDDLEWARE_RULE))
        .layer(middleware::from_fn(js_advice));

    let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
        .await
        .unwrap();
    println!("listening on {}", listener.local_addr().unwrap());
    axum::serve(listener, app).await.unwrap();
}

Example Output

cargo run --example middleware

When visiting http://127.0.0.1:3000/, the response will include:

<script>
alert("Warning!\nYou have JavaScript enabled, you are putting yourself at risk!\nPlease disable it immediately!");
</script>
Hello from `POST /`

If you have JavaScript enabled, a reminder will pop up asking you to disable it; otherwise, you can browse freely.

License

This project is licensed under the GPL License. See the LICENSE file for details.

Dependencies

~5–12MB
~121K SLoC