diff --git a/libraries/ESP8266WebServer/keywords.txt b/libraries/ESP8266WebServer/keywords.txt index e68547eb2..73cba339c 100644 --- a/libraries/ESP8266WebServer/keywords.txt +++ b/libraries/ESP8266WebServer/keywords.txt @@ -42,6 +42,7 @@ hostHeader KEYWORD2 ####################################### HTTP_GET LITERAL1 +HTTP_HEAD LITERAL1 HTTP_POST LITERAL1 HTTP_ANY LITERAL1 CONTENT_LENGTH_UNKNOWN LITERAL1 diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h b/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h index c5bcb59f7..3af7ca394 100644 --- a/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h +++ b/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h @@ -480,6 +480,7 @@ void ESP8266WebServerTemplate::send(int code, const String& content_ template void ESP8266WebServerTemplate::sendContent(const String& content) { + if (_currentMethod == HTTP_HEAD) return; const char * footer = "\r\n"; size_t len = content.length(); if(_chunked) { @@ -728,6 +729,7 @@ const String ESP8266WebServerTemplate::responseCodeToString(const in case 415: return F("Unsupported Media Type"); case 416: return F("Requested range not satisfiable"); case 417: return F("Expectation Failed"); + case 418: return F("I'm a teapot"); case 500: return F("Internal Server Error"); case 501: return F("Not Implemented"); case 502: return F("Bad Gateway"); diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer.h b/libraries/ESP8266WebServer/src/ESP8266WebServer.h index 6eec446d9..9b7c2bbb3 100644 --- a/libraries/ESP8266WebServer/src/ESP8266WebServer.h +++ b/libraries/ESP8266WebServer/src/ESP8266WebServer.h @@ -30,7 +30,7 @@ #include #include "detail/mimetable.h" -enum HTTPMethod { HTTP_ANY, HTTP_GET, HTTP_POST, HTTP_PUT, HTTP_PATCH, HTTP_DELETE, HTTP_OPTIONS }; +enum HTTPMethod { HTTP_ANY, HTTP_GET, HTTP_HEAD, HTTP_POST, HTTP_PUT, HTTP_PATCH, HTTP_DELETE, HTTP_OPTIONS }; enum HTTPUploadStatus { UPLOAD_FILE_START, UPLOAD_FILE_WRITE, UPLOAD_FILE_END, UPLOAD_FILE_ABORTED }; enum HTTPClientStatus { HC_NONE, HC_WAIT_READ, HC_WAIT_CLOSE }; @@ -194,10 +194,10 @@ protected: std::unique_ptr _currentUpload; int _postArgsLen; RequestArgument* _postArgs; - + int _headerKeysCount; RequestArgument* _currentHeaders; - + size_t _contentLength; String _responseHeaders; diff --git a/libraries/ESP8266WebServer/src/Parsing-impl.h b/libraries/ESP8266WebServer/src/Parsing-impl.h index 65ad38d62..c6b8ea16e 100644 --- a/libraries/ESP8266WebServer/src/Parsing-impl.h +++ b/libraries/ESP8266WebServer/src/Parsing-impl.h @@ -99,7 +99,9 @@ bool ESP8266WebServerTemplate::_parseRequest(ClientType& client) { _chunked = false; HTTPMethod method = HTTP_GET; - if (methodStr == F("POST")) { + if (methodStr == F("HEAD")) { + method = HTTP_HEAD; + } else if (methodStr == F("POST")) { method = HTTP_POST; } else if (methodStr == F("DELETE")) { method = HTTP_DELETE;