Google OAuth生产环境redirect_uri_mismatch错误求助(AWS部署)
解决Google OAuth redirect_uri_mismatch(HTTP/HTTPS协议不匹配)问题
问题根源
AWS ELB完成了HTTPS终止,但后端应用未识别到用户实际使用的HTTPS协议,仍生成HTTP协议的redirect_uri,导致与Google配置的HTTPS URI不匹配,触发错误。
具体解决步骤:
启用ELB的X-Forwarded-Proto头部转发
登录AWS控制台,找到你的Application Load Balancer,检查监听器配置,确保已开启转发X-Forwarded-Proto头部(ALB默认启用,但需确认未被修改)。该头部会将用户实际使用的协议(HTTPS)传递给后端应用。配置后端应用信任转发头部
以Django(从路径推测可能使用django-allauth)为例,在settings.py中添加以下配置:SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') USE_X_FORWARDED_HOST = True其他框架对应配置:
- Flask:使用
werkzeug.middleware.proxy_fix.ProxyFix中间件,设置x_proto=1 - Express:开启
trust proxy配置,让应用信任ELB的IP,从而识别X-Forwarded-Proto头部
- Flask:使用
核对Google OAuth凭证
再次确认Google Cloud Console中,Production状态的OAuth客户端凭证里,重定向URI准确为https://vya.daotao.ai/auth/complete/google-oauth2/,注意大小写、结尾斜杠等细节,避免拼写错误。重置应用与客户端缓存
重启后端应用服务,清除测试浏览器的缓存和Cookie,避免旧的HTTP配置残留导致的URI生成错误。检查ELB与后端的通信协议
确保ELB到后端实例的通信使用HTTP(无需后端配置HTTPS),只要后端正确处理X-Forwarded-Proto头部即可,避免后端强制HTTPS引发协议冲突。
内容的提问来源于stack exchange,提问作者Huy Vu The
相关产品推荐
相关产品推荐

