From a479fa5415bc7c1ed3af3265f93a496b41cc3a2f Mon Sep 17 00:00:00 2001 From: whaffman Date: Thu, 30 Oct 2025 23:04:52 +0100 Subject: [PATCH] feat: add support for 'Allow' header in METHOD_NOT_ALLOWED responses --- webserv/handler/ErrorHandler.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/webserv/handler/ErrorHandler.cpp b/webserv/handler/ErrorHandler.cpp index 903fc34..d2a9d93 100644 --- a/webserv/handler/ErrorHandler.cpp +++ b/webserv/handler/ErrorHandler.cpp @@ -6,6 +6,7 @@ #include // for getStatusCodeReason, INTERNAL_SERVER_ERROR #include // for HttpResponse #include // for Log, LOCATION +#include // for join #include // for basic_ifstream, basic_filebuf, basic_ostream::operator<<, ifstream, stringstream #include // for basic_stringstream @@ -19,6 +20,12 @@ void ErrorHandler::createErrorResponse(uint16_t statusCode, HttpResponse &respon response.setStatus(statusCode); response.addHeader("Content-Type", "text/html"); response.addHeader("Connection", "close"); + if (statusCode == Http::StatusCode::METHOD_NOT_ALLOWED && config != nullptr) + { + auto allowedMethods = config->get>("allowed_methods"); + if (allowedMethods.has_value()) + response.addHeader("Allow", utils::implode(allowedMethods.value(), ", ")); + } response.appendBody(generateErrorPage(statusCode, config)); response.setComplete(); }