Expand description
§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
axumandtokio.
§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_adviceThen, 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 middlewareWhen 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.
Functions§
- js_
advice - Middleware fn to add a pop-up of JS advice