You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django Channels报错ValueError: Invalid IPv6 URL求助

Django Channels WebSocket 连接报错:Invalid IPv6 URL

我已在项目中配置Django Channels,API及管理后台URL均正常运行,但尝试创建WebSocket连接时出现如下错误:

WebSocket HANDSHAKING /ws/notification/ [127.0.0.1:48494]
Exception inside application: Invalid IPv6 URL
Traceback (most recent call last):
  File "/home/jlp-020/Projects/POC_flutter_dating_application_BE/env/lib/python3.10/site-packages/django/contrib/staticfiles/handlers.py", line 101, in __call__
    return await self.application(scope, receive, send)
  File "/home/jlp-020/Projects/POC_flutter_dating_application_BE/env/lib/python3.10/site-packages/channels/routing.py", line 62, in __call__
    return await application(scope, receive, send)
  File "/home/jlp-020/Projects/POC_flutter_dating_application_BE/env/lib/python3.10/site-packages/channels/security/websocket.py", line 35, in __call__
    if self.valid_origin(parsed_origin):
  File "/home/jlp-020/Projects/POC_flutter_dating_application_BE/env/lib/python3.10/site-packages/channels/security/websocket.py", line 54, in valid_origin
    return self.validate_origin(parsed_origin)
  File "/home/jlp-020/Projects/POC_flutter_dating_application_BE/env/lib/python3.10/site-packages/channels/security/websocket.py", line 73, in validate_origin
    return any(
  File "/home/jlp-020/Projects/POC_flutter_dating_application_BE/env/lib/python3.10/site-packages/channels/security/websocket.py", line 74, in <genexpr>
    pattern == "*" or self.match_allowed_origin(parsed_origin, pattern)
  File "/home/jlp-020/Projects/POC_flutter_dating_application_BE/env/lib/python3.10/site-packages/channels/security/websocket.py", line 102, in match_allowed_origin
    pattern_hostname = urlparse("//" + pattern).hostname or pattern
  File "/usr/lib/python3.10/urllib/parse.py", line 400, in urlparse
    splitresult = urlsplit(url, scheme, allow_fragments)
  File "/usr/lib/python3.10/urllib/parse.py", line 495, in urlsplit
    raise ValueError("Invalid IPv6 URL")
ValueError: Invalid IPv6 URL
WebSocket DISCONNECT /ws/notification/ [127.0.0.1:48494]

解决方案

  • 问题根源:该错误是由于CHANNELS_ALLOWED_ORIGINS或ALLOWED_HOSTS配置中存在格式错误的地址,导致Channels在验证WebSocket请求源时,urlparse解析地址失败抛出异常。

  • 修复步骤:

    1. 打开项目的settings.py文件,检查CHANNELS_ALLOWED_ORIGINS配置:
      • 确保所有源地址格式正确:IPv4地址需带协议(如"http://127.0.0.1:8000");IPv6地址必须用方括号包裹(如"http://[::1]:8000");域名需包含完整协议和端口(如果非默认端口)。
    2. 开发环境可临时设置CHANNELS_ALLOWED_ORIGINS = ["*"]跳过源验证(生产环境禁止使用)。
    3. 检查ALLOWED_HOSTS配置,确保没有格式错误的IP或域名。
    4. 重启Django Channels服务,使新配置生效。

内容的提问来源于stack exchange,提问作者Himanshu Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 20:32:36