Skip to main content
 首页 » 编程设计

python之使用 Django 在 Google App Engine 上永久将 http 重定向到 https

2025年05月04日18yyy_WW

我正在开发一个项目,该项目在使用 Django 的 Python 3 灵活环境中使用 Google Cloud Platform 的 App Engine,我正在尝试将所有通过 http 的请求永久重定向到 https 用于所有路由,但到目前为止还没有成功。我可以通过 https 访问网站,但前提是在地址栏中明确写入。

我看过这篇文章:How to permanently redirect `http://` and `www.` URLs to `https://`?但没有找到有用的答案。

除了重定向之外,该应用程序在各个方面都可以正常工作。这是我的 app.yaml 文件:

# [START runtime] 
runtime: python 
env: flex 
entrypoint: gunicorn -b :$PORT myproject.wsgi 
 
runtime_config: 
  python_version: 3 
# [END runtime] 

在 myproject/settings.py 中,我定义了这些变量:

SECURE_SSL_REDIRECT = True 
SESSION_COOKIE_SECURE = True 
CSRF_COOKIE_SECURE = True 
SECURE_PROXY_SSL_HEADER = ('HTTP-X-FORWARDED-PROTO', 'https') 

在我的本地机器上,当我将 SECURE_SSL_REDIRECT 设置为 True 时,我被正确重定向到 https,即使 SSL 不支持本地主机。在生产环境中,我仍然可以仅使用 http 访问该网站。

是否有我遗漏或做错的事情导致重定向没有发生?

请您参考如下方法:

在 app.yaml 中设置 secure 仅适用于 GAE Standard,但不适用于 Flexible。 app.yaml docs for Flexible完全不要提及此 key 。

您可能必须通过检查 X-Forwarded-Proto header 的值在应用程序级别执行此操作。如果对您的应用的请求来自 HTTPS,它将被设置为 https。您可以在文档中的灵活环境中找到有关环境提供的 header 的更多信息 here .