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

Hen*_*ody 3 python django ssl google-app-engine google-cloud-platform

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

我看过这篇文章:如何将`http://`和`www.` URLs永久重定向到`https://`?但没有发现答案有用。

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

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

runtime_config:
  python_version: 3
# [END runtime]
Run Code Online (Sandbox Code Playgroud)

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

SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_PROXY_SSL_HEADER = ('HTTP-X-FORWARDED-PROTO', 'https')
Run Code Online (Sandbox Code Playgroud)

在我的本地机器上,当我设置SECURE_SSL_REDIRECT为 时True,我被https正确重定向到,即使 localhost 不支持 SSL。在生产中,我仍然可以仅使用http.

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

Mik*_*eyn 5

secureapp.yaml 中的设置仅适用于 GAE 标准,但不适用于灵活。灵活app.yaml 文档根本没有提到这个键。

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