Skip to content
16 changes: 12 additions & 4 deletions libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
Modified 8 May 2015 by Hristo Gochkov (proper post and file upload handling)
*/


#include <Arduino.h>
#include <libb64/cencode.h>
#include "WiFiServer.h"
Expand All @@ -45,7 +44,8 @@ static const char Content_Length[] PROGMEM = "Content-Length";

template <typename ServerType>
ESP8266WebServerTemplate<ServerType>::ESP8266WebServerTemplate(IPAddress addr, int port)
: _server(addr, port)
: _corsEnabled(false)
, _server(addr, port)
, _currentMethod(HTTP_ANY)
, _currentVersion(0)
, _currentStatus(HC_NONE)
Expand All @@ -66,7 +66,8 @@ ESP8266WebServerTemplate<ServerType>::ESP8266WebServerTemplate(IPAddress addr, i

template <typename ServerType>
ESP8266WebServerTemplate<ServerType>::ESP8266WebServerTemplate(int port)
: _server(port)
: _corsEnabled(false)
, _server(port)
, _currentMethod(HTTP_ANY)
, _currentVersion(0)
, _currentStatus(HC_NONE)
Expand Down Expand Up @@ -98,6 +99,10 @@ ESP8266WebServerTemplate<ServerType>::~ESP8266WebServerTemplate() {
}
}

template <typename ServerType>
void ESP8266WebServerTemplate<ServerType>::enableCORS(bool _ec) {
_corsEnabled = _ec;
}
template <typename ServerType>
void ESP8266WebServerTemplate<ServerType>::begin() {
close();
Expand Down Expand Up @@ -421,7 +426,10 @@ void ESP8266WebServerTemplate<ServerType>::_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";
Expand Down
3 changes: 3 additions & 0 deletions libraries/ESP8266WebServer/src/ESP8266WebServer.h
Original file line number Diff line number Diff line change
Expand Up @@ -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; }
Expand Down Expand Up @@ -249,6 +250,8 @@ class ESP8266WebServerTemplate
String _sopaque;
String _srealm; // Store the Auth realm between Calls

bool _corsEnabled;

};


Expand Down