From cdae5ed2ac7d5c9f605e024c95541820d772b68a Mon Sep 17 00:00:00 2001 From: michael Date: Wed, 17 Jun 2020 21:55:42 +0200 Subject: [PATCH 1/4] add ESP8266WebServerTemplate::enableCORS(bool _ec) like ESP32 arduino plateform --- .../ESP8266WebServer/src/ESP8266WebServer-impl.h | 16 ++++++++++++---- .../ESP8266WebServer/src/ESP8266WebServer.h | 3 +++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h b/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h index f085a8afe6..411cbf655b 100644 --- a/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h +++ b/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h @@ -20,7 +20,6 @@ Modified 8 May 2015 by Hristo Gochkov (proper post and file upload handling) */ - #include #include #include "WiFiServer.h" @@ -45,7 +44,8 @@ static const char Content_Length[] PROGMEM = "Content-Length"; template ESP8266WebServerTemplate::ESP8266WebServerTemplate(IPAddress addr, int port) -: _server(addr, port) +: _corsEnabled(false) +, _server(addr, port) , _currentMethod(HTTP_ANY) , _currentVersion(0) , _currentStatus(HC_NONE) @@ -66,7 +66,8 @@ ESP8266WebServerTemplate::ESP8266WebServerTemplate(IPAddress addr, i template ESP8266WebServerTemplate::ESP8266WebServerTemplate(int port) -: _server(port) +: _corsEnabled(false) +, _server(port) , _currentMethod(HTTP_ANY) , _currentVersion(0) , _currentStatus(HC_NONE) @@ -98,6 +99,10 @@ ESP8266WebServerTemplate::~ESP8266WebServerTemplate() { } } +template +void ESP8266WebServerTemplate::enableCORS(bool _ec) { + _corsEnabled = _ec; +} template void ESP8266WebServerTemplate::begin() { close(); @@ -421,7 +426,10 @@ void ESP8266WebServerTemplate::_prepareHeader(String& response, int sendHeader(String(F("Accept-Ranges")),String(F("none"))); sendHeader(String(F("Transfer-Encoding")),String(F("chunked"))); } - sendHeader(String(F("Connection")), String(F("close"))); + if (_corsEnabled) { + sendHeader(String(F("Access-Control-Allow-Origin")), String("*")); + } + sendHeader(String(F("Connection")), String(F("close"))); response += _responseHeaders; response += "\r\n"; diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer.h b/libraries/ESP8266WebServer/src/ESP8266WebServer.h index 9e999acadc..188df4b5f3 100644 --- a/libraries/ESP8266WebServer/src/ESP8266WebServer.h +++ b/libraries/ESP8266WebServer/src/ESP8266WebServer.h @@ -99,6 +99,7 @@ class ESP8266WebServerTemplate void serveStatic(const char* uri, fs::FS& fs, const char* path, const char* cache_header = NULL ); void onNotFound(THandlerFunction fn); //called when handler is not assigned void onFileUpload(THandlerFunction fn); //handle file uploads + void enableCORS(bool _ec); const String& uri() const { return _currentUri; } HTTPMethod method() const { return _currentMethod; } @@ -249,6 +250,8 @@ class ESP8266WebServerTemplate String _sopaque; String _srealm; // Store the Auth realm between Calls + bool _corsEnabled; + }; From 002238b83a940329030af11b9084054a4897f851 Mon Sep 17 00:00:00 2001 From: michael Date: Wed, 17 Jun 2020 23:28:03 +0200 Subject: [PATCH 2/4] add ESP8266WebServerTemplate::enableCORS(bool _ec) like ESP32 arduino plateform corrections --- .../ESP8266WebServer/src/ESP8266WebServer-impl.h | 12 ++++++------ libraries/ESP8266WebServer/src/ESP8266WebServer.h | 5 +++-- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h b/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h index 411cbf655b..821a602cc5 100644 --- a/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h +++ b/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h @@ -44,8 +44,7 @@ static const char Content_Length[] PROGMEM = "Content-Length"; template ESP8266WebServerTemplate::ESP8266WebServerTemplate(IPAddress addr, int port) -: _corsEnabled(false) -, _server(addr, port) +: _server(addr, port) , _currentMethod(HTTP_ANY) , _currentVersion(0) , _currentStatus(HC_NONE) @@ -61,13 +60,13 @@ ESP8266WebServerTemplate::ESP8266WebServerTemplate(IPAddress addr, i , _currentHeaders(nullptr) , _contentLength(0) , _chunked(false) +, _corsEnabled(false) { } template ESP8266WebServerTemplate::ESP8266WebServerTemplate(int port) -: _corsEnabled(false) -, _server(port) +: _server(port) , _currentMethod(HTTP_ANY) , _currentVersion(0) , _currentStatus(HC_NONE) @@ -83,6 +82,7 @@ ESP8266WebServerTemplate::ESP8266WebServerTemplate(int port) , _currentHeaders(nullptr) , _contentLength(0) , _chunked(false) +, _corsEnabled(false) { } @@ -100,8 +100,8 @@ ESP8266WebServerTemplate::~ESP8266WebServerTemplate() { } template -void ESP8266WebServerTemplate::enableCORS(bool _ec) { - _corsEnabled = _ec; +void ESP8266WebServerTemplate::enableCORS(bool enable) { + _corsEnabled = enable; } template void ESP8266WebServerTemplate::begin() { diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer.h b/libraries/ESP8266WebServer/src/ESP8266WebServer.h index 188df4b5f3..a0c0ac64c2 100644 --- a/libraries/ESP8266WebServer/src/ESP8266WebServer.h +++ b/libraries/ESP8266WebServer/src/ESP8266WebServer.h @@ -245,12 +245,13 @@ class ESP8266WebServerTemplate String _hostHeader; bool _chunked; - + bool _corsEnabled; + String _snonce; // Store noance and opaque for future comparison String _sopaque; String _srealm; // Store the Auth realm between Calls - bool _corsEnabled; + }; From 950745e29fac9efc49609e45bce07742c0f24036 Mon Sep 17 00:00:00 2001 From: michael Date: Wed, 17 Jun 2020 23:31:26 +0200 Subject: [PATCH 3/4] add ESP8266WebServerTemplate::enableCORS(bool _ec) like ESP32 arduino plateform corrections --- libraries/ESP8266WebServer/src/ESP8266WebServer.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer.h b/libraries/ESP8266WebServer/src/ESP8266WebServer.h index a0c0ac64c2..2ace5dc107 100644 --- a/libraries/ESP8266WebServer/src/ESP8266WebServer.h +++ b/libraries/ESP8266WebServer/src/ESP8266WebServer.h @@ -99,7 +99,7 @@ class ESP8266WebServerTemplate void serveStatic(const char* uri, fs::FS& fs, const char* path, const char* cache_header = NULL ); void onNotFound(THandlerFunction fn); //called when handler is not assigned void onFileUpload(THandlerFunction fn); //handle file uploads - void enableCORS(bool _ec); + void enableCORS(bool enable); const String& uri() const { return _currentUri; } HTTPMethod method() const { return _currentMethod; } @@ -246,7 +246,7 @@ class ESP8266WebServerTemplate String _hostHeader; bool _chunked; bool _corsEnabled; - + String _snonce; // Store noance and opaque for future comparison String _sopaque; String _srealm; // Store the Auth realm between Calls From 9f23964e760e0282e6df0254bacc0ffea630f2c7 Mon Sep 17 00:00:00 2001 From: "Earle F. Philhower, III" Date: Sun, 21 Jun 2020 14:00:46 -0700 Subject: [PATCH 4/4] Minor spacing correction --- libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h b/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h index 821a602cc5..0823a5ed47 100644 --- a/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h +++ b/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h @@ -429,7 +429,7 @@ void ESP8266WebServerTemplate::_prepareHeader(String& response, int if (_corsEnabled) { sendHeader(String(F("Access-Control-Allow-Origin")), String("*")); } - sendHeader(String(F("Connection")), String(F("close"))); + sendHeader(String(F("Connection")), String(F("close"))); response += _responseHeaders; response += "\r\n";