From 50b7ec3c73c32c5d015de6517897eea0f8978e61 Mon Sep 17 00:00:00 2001 From: -LAN- Date: Wed, 25 Dec 2024 18:36:33 +0800 Subject: [PATCH] fix(http_request): add error handling for invalid URLs (#12082) Signed-off-by: -LAN- --- api/core/workflow/nodes/http_request/exc.py | 4 ++++ api/core/workflow/nodes/http_request/executor.py | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/api/core/workflow/nodes/http_request/exc.py b/api/core/workflow/nodes/http_request/exc.py index a815f277b..46613c9e8 100644 --- a/api/core/workflow/nodes/http_request/exc.py +++ b/api/core/workflow/nodes/http_request/exc.py @@ -20,3 +20,7 @@ class ResponseSizeError(HttpRequestNodeError): class RequestBodyError(HttpRequestNodeError): """Raised when the request body is invalid.""" + + +class InvalidURLError(HttpRequestNodeError): + """Raised when the URL is invalid.""" diff --git a/api/core/workflow/nodes/http_request/executor.py b/api/core/workflow/nodes/http_request/executor.py index cdfdc6e6d..fadd142e3 100644 --- a/api/core/workflow/nodes/http_request/executor.py +++ b/api/core/workflow/nodes/http_request/executor.py @@ -23,6 +23,7 @@ from .exc import ( FileFetchError, HttpRequestNodeError, InvalidHttpMethodError, + InvalidURLError, RequestBodyError, ResponseSizeError, ) @@ -66,6 +67,12 @@ class Executor: node_data.authorization.config.api_key ).text + # check if node_data.url is a valid URL + if not node_data.url: + raise InvalidURLError("url is required") + if not node_data.url.startswith(("http://", "https://")): + raise InvalidURLError("url should start with http:// or https://") + self.url: str = node_data.url self.method = node_data.method self.auth = node_data.authorization