已配置部分参数仍无法让同网机器访问Django服务器,需补充哪些设置?
Django跨局域网访问问题排查与解决步骤
已完成的配置
- settings.py 配置
ALLOWED_HOSTS = ["127.0.0.1", "localhost", "TestPC-A" , "0.0.0.0", "192.25.56.120"] # 不确定是否需要以下配置: CSRF_TRUSTED_ORIGINS = [ "http://127.0.0.1", "https://127.0.0.1", "http://localhost", "https://localhost", "https://TestPC-A", "http://TestPC-A", ]
- runserver.bat 启动脚本
@echo off REM Activate virtual environment in the current terminal session and run server cmd /k ".venv\Scripts\activate && python manage.py runserver_plus --cert-file cert.pem --key-file key.pem 0.0.0.0:8000"
- TestPC-A 本地hosts映射
192.25.56.120 TestPC-A
需要补充的设置
1. 配置访问端的hosts文件
仅在TestPC-A本地配置hosts无效,其他需要访问的电脑也需添加映射:
- Windows:编辑
C:\Windows\System32\drivers\etc\hosts,添加192.25.56.120 TestPC-A - Linux/macOS:编辑
/etc/hosts,添加同样内容
2. 开放TestPC-A的Windows防火墙端口
Windows防火墙默认拦截外部对8000端口的请求,需手动放行:
- 打开「Windows Defender防火墙」→「高级设置」→「入站规则」→「新建规则」
- 选择「端口」,下一步,勾选「TCP」,输入本地端口
8000 - 选择「允许连接」,下一步,勾选适用的网络(至少包含「专用」)
- 命名规则(如「Django 8000端口」)并完成创建
3. 完善CSRF_TRUSTED_ORIGINS配置
补充IP地址的HTTPS/HTTP条目,避免后续CSRF验证错误:
CSRF_TRUSTED_ORIGINS = [ "http://127.0.0.1", "https://127.0.0.1", "http://localhost", "https://localhost", "https://TestPC-A", "http://TestPC-A", "https://192.25.56.120", "http://192.25.56.120", ]
4. 测试基础连通性
先在访问端验证网络和端口连通性:
- 测试网络连通:
ping 192.25.56.120,不通则排查局域网网段、路由器限制问题 - 测试端口连通(PowerShell):
Test-NetConnection 192.25.56.120 -Port 8000,若返回TcpTestSucceeded : True说明端口正常,否则检查防火墙或服务器监听配置
5. 处理HTTPS证书信任问题
若浏览器提示证书不安全,可选择两种方式:
- 将TestPC-A上的
cert.pem导入访问端浏览器的「受信任的根证书颁发机构」 - 暂时改用HTTP测试:移除启动脚本中的
--cert-file和--key-file参数,访问http://TestPC-A:8000/确认服务正常后再处理证书
内容的提问来源于stack exchange,提问作者user2201789
相关产品推荐
相关产品推荐

