commit 3b34b429f3bfbac551d28926d57138abe66f87c3
parent 97ffd17789b171c96156f1a825e61d101a483c9c
Author: Daniel GarcĂa <dani-garcia@users.noreply.github.com>
Date: Mon, 6 Mar 2023 21:12:54 +0100
Merge pull request #3307 from jjlin/head-routes
Add HEAD routes to avoid spurious error messages
Diffstat:
1 file changed, 21 insertions(+), 3 deletions(-)
diff --git a/src/api/web.rs b/src/api/web.rs
@@ -4,7 +4,7 @@ use rocket::{fs::NamedFile, http::ContentType, response::content::RawHtml as Htm
use serde_json::Value;
use crate::{
- api::{core::now, ApiResult},
+ api::{core::now, ApiResult, EmptyResult},
error::Error,
util::{Cached, SafeString},
CONFIG,
@@ -14,9 +14,9 @@ pub fn routes() -> Vec<Route> {
// If addding more routes here, consider also adding them to
// crate::utils::LOGGED_ROUTES to make sure they appear in the log
if CONFIG.web_vault_enabled() {
- routes![web_index, app_id, web_files, attachments, alive, static_files]
+ routes![web_index, web_index_head, app_id, web_files, attachments, alive, alive_head, static_files]
} else {
- routes![attachments, alive, static_files]
+ routes![attachments, alive, alive_head, static_files]
}
}
@@ -43,6 +43,17 @@ async fn web_index() -> Cached<Option<NamedFile>> {
Cached::short(NamedFile::open(Path::new(&CONFIG.web_vault_folder()).join("index.html")).await.ok(), false)
}
+#[head("/")]
+fn web_index_head() -> EmptyResult {
+ // Add an explicit HEAD route to prevent uptime monitoring services from
+ // generating "No matching routes for HEAD /" error messages.
+ //
+ // Rocket automatically implements a HEAD route when there's a matching GET
+ // route, but relying on this behavior also means a spurious error gets
+ // logged due to <https://github.com/SergioBenitez/Rocket/issues/1098>.
+ Ok(())
+}
+
#[get("/app-id.json")]
fn app_id() -> Cached<(ContentType, Json<Value>)> {
let content_type = ContentType::new("application", "fido.trusted-apps+json");
@@ -92,6 +103,13 @@ fn alive(_conn: DbConn) -> Json<String> {
now()
}
+#[head("/alive")]
+fn alive_head(_conn: DbConn) -> EmptyResult {
+ // Avoid logging spurious "No matching routes for HEAD /alive" errors
+ // due to <https://github.com/SergioBenitez/Rocket/issues/1098>.
+ Ok(())
+}
+
#[get("/vw_static/<filename>")]
pub fn static_files(filename: String) -> Result<(ContentType, &'static [u8]), Error> {
match filename.as_ref() {