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(); }