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

Django REST Framework开发服务器HTTPS访问报错求助

Django REST Framework 安全配置后出现的HTTPS及连接拒绝问题

问题描述

为提升Django REST Framework站点安全性,参照视频和文章配置安全参数后出现报错。目前丢失初始报错日志,但当前报错疑似与之前一致。已尝试还原配置、使用ChatGPT排查方案,均未解决问题:

  • 访问API站点时,终端提示“尝试通过HTTPS访问仅支持HTTP的开发服务器”
  • 使用fetch.py请求数据时,出现连接被拒绝错误

相关配置与报错信息

settings.py 配置

from pathlib import Path
import os

BASE_DIR = Path(__file__).resolve().parent.parent


SECRET_KEY = 'later'
DEBUG = False
ALLOWED_HOSTS = ['*']


INSTALLED_APPS = [
    'api',  # api是我的应用名称
    'rest_framework',
    'rest_framework.authtoken',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.contenttypes',
]
MIDDLEWARE = [
    # 'whitenoise.middleware.WhiteNoiseMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'pythonRestApi.urls'
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'pythonRestApi.wsgi.application'


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}


AUTH_PASSWORD_VALIDATORS = [
    {'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator'},
    {'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator'},
    {'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator'},
    {'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator'},
]


LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_TZ = True


STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')


DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'


# 已还原的安全配置,原本均设为True
SECURE_BROWSER_XSS_FILTER = False
SECURE_CONTENT_TYPE_NOSNIFF = False

SECURE_SSL_REDIRECT = False

SECURE_HSTS_SECONDS = 0  # 原本设为86400
SECURE_HSTS_PRELOAD = False
SECURE_HSTS_INCLUDE_SUBDOMAINS = False

SESSION_COOKIE_SECURE = False
CSRF_COOKIE_SECURE = False

终端报错信息

code 400, message Bad request version ('ZZ\x13\x01\x13\x02\x13\x03À+À/À,À0̨̩À\x13À\x14\x00\x9c\x00\x9d\x00/\x005\x01\x00\x01\x93ÊÊ\x00\x00\x00')  // 每次内容都会变化
你正在通过HTTPS访问仅支持HTTP的开发服务器。
code 400, message Bad HTTP/0.9 request type ('\x16\x03\x01\x02\x00\x01\x00\x01ü\x03\x03\x18Ø&\x81é5Â')
你正在通过HTTPS访问仅支持HTTP的开发服务器。

fetch.py 报错信息

发生错误:HTTPConnectionPool(host='192.168.29.72', port=80): 对URL: /auth/ 的重试次数已达上限(由NewConnectionError导致:'<urllib3.connection.HTTPConnection object at 0x000002D5090B52B0>: 无法建立新连接:[WinError 10061] 由于目标计算机积极拒绝,无法连接。')

解决方案

针对HTTPS访问HTTP服务器的报错

  1. 确认访问协议与端口:Django自带的开发服务器runserver默认仅支持HTTP,访问时需使用http://开头的地址,比如http://localhost:8000或http://192.168.29.72:8000(默认端口为8000)
  2. 清除浏览器缓存:之前设置的SECURE_SSL_REDIRECT可能被浏览器缓存,使用隐身模式访问或清除缓存后重试
  3. 排查代理工具干扰:检查是否有本地代理工具(如Charles、Fiddler)强制将HTTP请求转为HTTPS,暂时关闭这类工具测试

针对fetch.py连接被拒绝的报错

  1. 指定服务器绑定地址与端口:启动开发服务器时明确绑定目标IP和端口,比如执行:
    python manage.py runserver 192.168.29.72:8000
    
    若要使用80端口,需以管理员权限运行命令,但开发环境不推荐使用80端口
  2. 修正fetch.py请求地址:将请求地址改为服务器实际运行的地址,比如http://192.168.29.72:8000/auth/
  3. 检查防火墙与端口:确认本地防火墙未拦截8000端口(或你指定的端口)
  4. 临时开启DEBUG模式:开发环境下暂时将DEBUG设为True,排查是否因DEBUG关闭导致的额外限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 07:51:04