diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h b/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h index f085a8afe6..0823a5ed47 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" @@ -61,6 +60,7 @@ ESP8266WebServerTemplate::ESP8266WebServerTemplate(IPAddress addr, i , _currentHeaders(nullptr) , _contentLength(0) , _chunked(false) +, _corsEnabled(false) { } @@ -82,6 +82,7 @@ ESP8266WebServerTemplate::ESP8266WebServerTemplate(int port) , _currentHeaders(nullptr) , _contentLength(0) , _chunked(false) +, _corsEnabled(false) { } @@ -98,6 +99,10 @@ ESP8266WebServerTemplate::~ESP8266WebServerTemplate() { } } +template +void ESP8266WebServerTemplate::enableCORS(bool enable) { + _corsEnabled = enable; +} template void ESP8266WebServerTemplate::begin() { close(); @@ -421,6 +426,9 @@ void ESP8266WebServerTemplate::_prepareHeader(String& response, int sendHeader(String(F("Accept-Ranges")),String(F("none"))); sendHeader(String(F("Transfer-Encoding")),String(F("chunked"))); } + if (_corsEnabled) { + sendHeader(String(F("Access-Control-Allow-Origin")), String("*")); + } sendHeader(String(F("Connection")), String(F("close"))); response += _responseHeaders; diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer.h b/libraries/ESP8266WebServer/src/ESP8266WebServer.h index 9e999acadc..2ace5dc107 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 enable); const String& uri() const { return _currentUri; } HTTPMethod method() const { return _currentMethod; } @@ -244,11 +245,14 @@ 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 + + };