使用Render免费层部署Django API持续出现400 Bad Request错误
解决Render部署Django API出现400 Bad Request的问题
以下是针对该问题的排查和解决步骤:
- 配置SECURE_PROXY_SSL_HEADER
Render作为反向代理服务会通过X-Forwarded-Proto头传递真实请求协议,Django默认不识别此头,会将HTTPS请求判定为不安全,进而返回400错误。在settings.py中添加以下配置:
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
校验环境变量格式
确保Render环境面板中的变量格式符合Django要求:ALLOWED_HOSTS:填写不带协议的Render域名(如your-app-name.onrender.com),多域名用逗号分隔,不要包含https://CSRF_TRUSTED_ORIGINS:必须包含完整协议和域名(如https://your-app-name.onrender.com),多域名同样用逗号分隔- 若环境变量使用空格而非逗号分隔,需在
settings.py中指定分隔符:ALLOWED_HOSTS = env.list("ALLOWED_HOSTS", sep=" ") CSRF_TRUSTED_ORIGINS = env.list("TRUSTED_ORIGINS", sep=" ")
确认根路由配置
虽然400错误通常与路由无关,但如果根路径/无对应视图处理,也可能引发异常。检查urls.py是否有根路由配置,示例:
from django.urls import path from django.http import HttpResponse urlpatterns = [ path('', lambda request: HttpResponse('API 运行中'), name='home'), ]
- 手动重启Render服务
环境变量或配置更新后,需在Render面板中手动重启服务,确保新配置生效。
内容的提问来源于stack exchange,提问作者El Barto
相关产品推荐
相关产品推荐

