Flask部署Azure后Google OAuth认证失败,报InsecureTransportError错误
解决Flask部署到Azure后的OAuth InsecureTransportError问题
这个错误的核心原因是Azure Web Services通过反向代理转发请求,到达Flask应用的实际请求是HTTP协议,导致oauthlib判定传输不安全,即便外部访问用的是HTTPS。以下是具体解决步骤:
1. 让Flask识别反向代理的HTTPS请求
在Flask应用代码中添加Werkzeug的ProxyFix中间件,同时设置首选URL方案为HTTPS:
from flask import Flask from werkzeug.middleware.proxy_fix import ProxyFix app = Flask(__name__) # 强制生成的URL使用HTTPS app.config['PREFERRED_URL_SCHEME'] = 'https' # 信任反向代理传递的X-Forwarded-Proto头,识别实际请求协议 app.wsgi_app = ProxyFix(app.wsgi_app, x_proto=1)
2. 确认OAuth客户端重定向URI配置
检查Google OAuth控制台中的重定向地址,确保完全匹配https://testapp.azurewebsites.net/google_login/callback/,包括末尾的斜杠,避免拼写错误。
3. 开启Azure Web应用的HTTPS强制
登录Azure门户,进入你的Web应用:
- 找到「设置」>「配置」>「常规设置」
- 开启「HTTPS Only」选项,强制所有外部请求使用HTTPS。
开发环境使用127.0.0.1正常是因为oauthlib默认信任本地HTTP请求,但生产环境必须通过上述配置让Flask正确识别Azure反向代理后的HTTPS协议。
内容的提问来源于stack exchange,提问作者user3525290
相关产品推荐
相关产品推荐

