mirror of
https://github.com/me-no-dev/ESPAsyncWebServer.git
synced 2025-07-30 10:47:31 +02:00
Fix #142: canHandle implementations should check for the request type (http, websocket, sse)
This commit is contained in:
@ -386,10 +386,7 @@ size_t AsyncEventSource::count() const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool AsyncEventSource::canHandle(AsyncWebServerRequest* request) const {
|
bool AsyncEventSource::canHandle(AsyncWebServerRequest* request) const {
|
||||||
if (request->method() != HTTP_GET || !request->url().equals(_url)) {
|
return request->isSSE() && request->url().equals(_url);
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AsyncEventSource::handleRequest(AsyncWebServerRequest* request) {
|
void AsyncEventSource::handleRequest(AsyncWebServerRequest* request) {
|
||||||
|
@ -90,17 +90,13 @@ AsyncCallbackJsonWebHandler::AsyncCallbackJsonWebHandler(const String& uri, ArJs
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool AsyncCallbackJsonWebHandler::canHandle(AsyncWebServerRequest* request) const {
|
bool AsyncCallbackJsonWebHandler::canHandle(AsyncWebServerRequest* request) const {
|
||||||
if (!_onRequest)
|
if (!_onRequest || !request->isHTTP() || !(_method & request->method()))
|
||||||
return false;
|
|
||||||
|
|
||||||
WebRequestMethodComposite request_method = request->method();
|
|
||||||
if (!(_method & request_method))
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (_uri.length() && (_uri != request->url() && !request->url().startsWith(_uri + "/")))
|
if (_uri.length() && (_uri != request->url() && !request->url().startsWith(_uri + "/")))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (request_method != HTTP_GET && !request->contentType().equalsIgnoreCase(asyncsrv::T_application_json))
|
if (request->method() != HTTP_GET && !request->contentType().equalsIgnoreCase(asyncsrv::T_application_json))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -45,17 +45,13 @@ AsyncCallbackMessagePackWebHandler::AsyncCallbackMessagePackWebHandler(const Str
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool AsyncCallbackMessagePackWebHandler::canHandle(AsyncWebServerRequest* request) const {
|
bool AsyncCallbackMessagePackWebHandler::canHandle(AsyncWebServerRequest* request) const {
|
||||||
if (!_onRequest)
|
if (!_onRequest || !request->isHTTP() || !(_method & request->method()))
|
||||||
return false;
|
|
||||||
|
|
||||||
WebRequestMethodComposite request_method = request->method();
|
|
||||||
if (!(_method & request_method))
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (_uri.length() && (_uri != request->url() && !request->url().startsWith(_uri + "/")))
|
if (_uri.length() && (_uri != request->url() && !request->url().startsWith(_uri + "/")))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (request_method != HTTP_GET && !request->contentType().equalsIgnoreCase(asyncsrv::T_application_msgpack))
|
if (request->method() != HTTP_GET && !request->contentType().equalsIgnoreCase(asyncsrv::T_application_msgpack))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -1122,13 +1122,7 @@ const char __WS_STR_UUID[] PROGMEM = {"258EAFA5-E914-47DA-95CA-C5AB0DC85B11"};
|
|||||||
#define WS_STR_UUID FPSTR(__WS_STR_UUID)
|
#define WS_STR_UUID FPSTR(__WS_STR_UUID)
|
||||||
|
|
||||||
bool AsyncWebSocket::canHandle(AsyncWebServerRequest* request) const {
|
bool AsyncWebSocket::canHandle(AsyncWebServerRequest* request) const {
|
||||||
if (!_enabled)
|
return _enabled && request->isWebSocketUpgrade() && request->url().equals(_url);
|
||||||
return false;
|
|
||||||
|
|
||||||
if (request->method() != HTTP_GET || !request->url().equals(_url) || !request->isExpectedRequestedConnType(RCT_WS))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AsyncWebSocket::handleRequest(AsyncWebServerRequest* request) {
|
void AsyncWebSocket::handleRequest(AsyncWebServerRequest* request) {
|
||||||
|
@ -106,10 +106,7 @@ AsyncStaticWebHandler& AsyncStaticWebHandler::setLastModified() {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
bool AsyncStaticWebHandler::canHandle(AsyncWebServerRequest* request) const {
|
bool AsyncStaticWebHandler::canHandle(AsyncWebServerRequest* request) const {
|
||||||
if (request->method() != HTTP_GET || !request->url().startsWith(_uri) || !request->isExpectedRequestedConnType(RCT_DEFAULT, RCT_HTTP)) {
|
return request->isHTTP() && request->method() == HTTP_GET && request->url().startsWith(_uri) && _getFile(request);
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return _getFile(request);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AsyncStaticWebHandler::_getFile(AsyncWebServerRequest* request) const {
|
bool AsyncStaticWebHandler::_getFile(AsyncWebServerRequest* request) const {
|
||||||
@ -253,10 +250,7 @@ void AsyncCallbackWebHandler::setUri(const String& uri) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool AsyncCallbackWebHandler::canHandle(AsyncWebServerRequest* request) const {
|
bool AsyncCallbackWebHandler::canHandle(AsyncWebServerRequest* request) const {
|
||||||
if (!_onRequest)
|
if (!_onRequest || !request->isHTTP() || !(_method & request->method()))
|
||||||
return false;
|
|
||||||
|
|
||||||
if (!(_method & request->method()))
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
#ifdef ASYNCWEBSERVER_REGEX
|
#ifdef ASYNCWEBSERVER_REGEX
|
||||||
|
Reference in New Issue
Block a user