diff --git a/backend/open_webui/retrieval/utils.py b/backend/open_webui/retrieval/utils.py index ed53c35db5..371a2313eb 100644 --- a/backend/open_webui/retrieval/utils.py +++ b/backend/open_webui/retrieval/utils.py @@ -197,14 +197,24 @@ def _extract_text_from_binary_response( os.remove(tmp_path) +TEXT_APPLICATION_CONTENT_TYPES = { + 'application/javascript', + 'application/json', + 'application/xml', + 'application/x-javascript', +} + + def _is_text_content_type(content_type: str) -> bool: """Return True if the content type should be handled by the web loader.""" ct = content_type.split(';')[0].strip().lower() + if not ct: + return True if ct.startswith('text/'): return True - if any(t in ct for t in ['xml', 'json', 'javascript']): + if ct in TEXT_APPLICATION_CONTENT_TYPES: return True - return not ct # empty / missing → assume HTML + return ct.endswith(('+xml', '+json')) async def get_content_from_url(request, url: str) -> str: