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

Heroku已配HTTPS调用谷歌Sheets API仍报OAuth2 InsecureTransportError

核心原因

报错由oauthlib的传输安全校验触发,本质是你的Django服务识别到的当前请求协议为HTTP,和外部域名配置了HTTPS无关:Heroku的架构会在边缘负载均衡层终止SSL连接,转发到应用实例的请求实际走内部HTTP协议,默认配置下Django不会识别代理传递的HTTPS标识。

修复方案
  • 首先修改Django项目settings.py文件,添加如下配置:
# 信任Heroku反向代理的HTTPS标识头
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
USE_X_FORWARDED_HOST = True

配置生效后Django会识别Heroku传递的X-Forwarded-Proto请求头,当外部请求是HTTPS时,Django内部的request.scheme会返回https,通过oauthlib的校验。

  • 检查Google OAuth Flow初始化时的redirect_uri参数:不要硬编码HTTP开头的地址,优先用request.build_absolute_uri生成回调地址,配置修复后该方法会自动生成HTTPS前缀的回调地址。
  • 确认生产环境未配置OAUTHLIB_INSECURE_TRANSPORT=1环境变量,该变量仅用于本地HTTP测试,生产环境开启会存在安全隐患。
进一步排查所需信息
  • authorize_success视图开头输出的request.scheme、request.META.get('HTTP_X_FORWARDED_PROTO')的实际值
  • 构造Google OAuth Flow实例时的回调地址相关代码
  • Django配置文件中所有SECURE_前缀的配置项值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:45:05