【问题标题】:How to force Google App Engine [python] to use SSL (https)?如何强制 Google App Engine [python] 使用 SSL (https)?
【发布时间】:2015-03-02 12:25:47
【问题描述】:

我使用 Python 在 Google App Engine 上编写了一个网络应用程序。

用户可以通过 http://[youraccount].appspot.com 和 https://[youraccount].appspot.com

访问我的网站

如何将 http 流量重定向到 https 网站。

换句话说,我如何强制该网站使用 SSL(https) 来实现安全目的(以及更好的 SEO)?

【问题讨论】:

    标签: python google-app-engine https


    【解决方案1】:

    只需将secure 参数添加到app.yaml 文件即可。

    handlers:
    - url: /youraccount/.*
      script: accounts.py
      login: required
      secure: always
    

    Configuring Secure URLs in app.yaml

    Google App Engine 支持通过 HTTPS 为 URL 使用的安全连接 *.appspot.com 域。当请求使用 HTTPS 访问 URL 时, 并且该 URL 在 app.yaml 文件中配置为使用 HTTPS, 请求数据和响应数据在发送之前被发送者加密 它们被传输,并由接收者在它们被解密后解密 收到。安全连接对于保护客户数据很有用, 例如联系信息、密码和私人信息。

    【讨论】:

    • 值得注意的是,默认响应码为302,您可以使用redirect_http_response_code: 301参数更改响应码。
    【解决方案2】:

    对于在 Flexible 环境中在 Google App Engine 上运行的 Django 项目,在 app.yaml 中设置 secure: always 不起作用 [Google Cloud docs]

    相反,在我的settings.py 文件中,我添加了以下[Django docs]

    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
    SECURE_SSL_REDIRECT = True
    SECURE_HSTS_SECONDS = 31536000
    SECURE_HSTS_INCLUDE_SUBDOMAINS = True
    

    请注意,SECURE_PROXY_SSL_HEADER 是必需的,因为服务器位于负载平衡器后面。

    【讨论】:

    • 奇怪,这个有-1票。如果您愿意强制build_absolute_uri()函数在灵活的环境下返回django应用程序的HTTPS URL,这是正确的答案。谢谢!
    • 如果可能的话,我会投 100 票。这就像一个没有痛苦的魔法!谢谢!!!!
    猜你喜欢
    • 1970-01-01
    • 2021-01-10
    • 1970-01-01
    • 2018-08-21
    • 2022-01-24
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    相关资源
    最近更新 更多