如何强制 AppEngine 灵活环境中的 Python 3 Django 应用程序始终使用 https?

2024-03-08

当使用带有 Google 生成的安全证书的自定义域时,如何将 http 请求重定向到 https?

我尝试在设置中将 Django 属性 SECURE_SSL_REDIRECT 设置为 True,但这不起作用。

编辑:是的,这个问题已经存在,但该解决方案仅适用于Python2。

解决方案:就我而言,解决方案只是从 Appengine 灵活环境切换到 Appengine 标准环境。我使用以下 app.yaml 解决了 SSL 问题。

runtime: python37
entrypoint: gunicorn -b :$PORT <django-project-name>.wsgi

handlers:
  - url: /.*
    secure: always
    redirect_http_response_code: 301
    script: auto

beta_settings:
  cloud_sql_instances: "<project-id>:<region>:<cloud-sql-instance>"

经过一番猜测和检查,我偶然发现了一个解决方案。

不要使用 SECURE_SSL_REDIRECT Django 设置。相反,更新您的 app.yaml 以包含 secure:always,但还要确保设置了入口点,将 url 设置为 /.*,并将脚本设置为 auto。

尽管 Google 文档明确指出处理程序部分已被弃用,但测试应用程序在使用或不使用处理程序部分部署时发现,截至今天,GAE 确实引用了 app.yaml 的处理程序部分。

编辑:发现这个清楚地显示了 Python 3.7 app.yaml 中的处理程序 -https://cloud.google.com/appengine/docs/standard/python3/config/appref#handlers_element https://cloud.google.com/appengine/docs/standard/python3/config/appref#handlers_element

app.yaml

runtime: python
env: flex
entrypoint: gunicorn -b :$PORT <projectid>.wsgi

handlers:
  - url: /.*
    secure: always
    script: auto

beta_settings:
    cloud_sql_instances: "<projectid>:<dbregion>:<dbinstance>"

runtime_config:
  python_version: 3

在遇到更多问题后,尽管文档说处理程序可以工作,但我已切换到 Appengine 标准环境,并且它运行良好。

runtime: python37
entrypoint: gunicorn -b :$PORT <django-project-name>.wsgi

handlers:
  - url: /.*
    secure: always
    redirect_http_response_code: 301
    script: auto

beta_settings:
  cloud_sql_instances: "<project-id>:<region>:<cloud-sql-instance>"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何强制 AppEngine 灵活环境中的 Python 3 Django 应用程序始终使用 https? 的相关文章

  • 父子进程之间的通信

    我正在尝试创建一个具有一个或多个子进程的 Python 3 程序 父进程生成子进程 然后继续处理自己的业务 有时我想向特定的子进程发送一条消息 由其捕获该消息并采取行动 此外 子进程在等待消息时需要处于非锁定状态 它将运行自己的循环来维护服
  • Heroku 上的 Django 翻译无法完全正常工作

    我在 Heroku 上部署了 Django 应用程序 并添加了https github com piotras heroku buildpack gettext git此 ugettext 构建包和应用程序的某些部分已注释翻译 本地可以用
  • 带表格格式的 Matplotlib 条形图

    我在图的底部添加了一个表格 但它存在许多问题 右边的内边距太多了 左边的填充太少 底部没有填充物 单元格对于其中的文本来说太小 该表距离图的底部太近 属于行名称的单元格的颜色未与条形图的颜色相匹配 我要发疯了 去摆弄这个 有人可以帮我解决这
  • QDataWidgetMapper;将 TableWidget 映射到模型

    我没有找到任何文档显示 QDataWidgetMapper 实际上适用于哪些小部件 也没有找到任何使用 QTableWidget 进行映射的实现 它绝对适用于 QLineEdit 和 QComboBoxes 它们是输入小部件 但是是否可以映
  • 当变量取特定值时如何使 PyCharm 中断?

    我有一本大字典 其中一些元素偶尔会出现非法值 我想弄清楚非法值从何而来 PyCharm 应该不断监视我的字典的值 一旦它们中的任何一个取了非法值 它就应该中断并让我检查程序的状态 我知道我可以通过为我的字典创建一个 getter sette
  • 如何在 MacBook Pro 上的 Docker 容器内运行 tkinter?

    我正在尝试运行一个使用以下命令的 python GUI 应用程序tkinter我的 MacBook Pro 上的 docker 容器内的模块 所以我安装了XQuartz https www xquartz org 并跟随本教程 https
  • 如何在不同版本的Google App Engine中使用自定义域名?

    我使用谷歌应用程序引擎作为我的 Android 和 Web 应用程序的服务器 我使用 Android Studio 开发了 Android 应用程序 并使用 Eclipse 开发了 Web 应用程序 我在应用程序引擎中部署了两个版本 第一个
  • django-autocompletion-light 简单外键完成显示不可编辑的下拉小部件

    我有一个国家模型 class Country models Model name models CharField max length 200 def str self return self name 这是由 UserDetails 模
  • Python:返回 // 正则表达式之间的字符串[重复]

    这个问题在这里已经有答案了 我仍然不明白正则表达式 我阅读了文档 但是在我想出了正则表达式字符之后 那么如何使用它们呢 例如 我只想返回前两个斜杠之间的任何内容 en lemon peel n ca llimona n is 的输出应该是
  • 如何将 Django 中的数组传递给模板并在 JavaScript 中使用它

    我想将数组传递给模板 然后通过 JavaScript 使用它 In my views py I have arry1 Str 500 20 return render to response test html array1 arry1 在
  • 巩固 Django 南迁移

    在我的项目的初始阶段 我对模型进行了很多更改 因此我最终为我的应用程序生成了很多向南迁移 在转到我的生产服务器执行迁移之前 是否可以以任何方式整合它们 这样我就不会为每个应用程序进行一百万次迁移 如果是这样 我该怎么做呢 您始终可以删除现有
  • 在 django 中自定义项目和应用程序模板

    我想自定义运行时创建的文件和文件夹 python manage py startapp appname 我发现一遍又一遍地做一些事情 我认为如果在创建新应用程序时存在我的自定义功能 那就太好了 您知道创建应用程序时可以在哪里自定义默认文件吗
  • 如何在Windows中的Python 3.9下pip安装pickle?

    我需要pickle https docs python org 3 9 library pickle html module pickle包安装在我的下面Python 3 9在 Windows 10 下 我尝试过的 当尝试与pip inst
  • django 模板 - 如何动态访问变量?

    假设我有一个具有以下上下文的 django 模板 data1 this is data1 data2 this is data2 data name data2 现在我知道了data name 假设它是 data2 是否可以用它来访问变量d
  • 如何手动发送django异常日志?

    我的应用程序中有一个应该返回的特定视图HttpResponse 如果一切都成功完成并且类似HttpResponseBadRequest 否则 此视图适用于外部数据 因此可能会引发一些意外的异常 我当然需要知道发生了什么 所以我有这样的东西
  • Django 独特的不工作

    我在从查询中过滤掉重复项时遇到问题 我正在使用 Django 1 4 和 Postgres 8 4 13 我在我的模型对象上使用这个查询 它是一个 jquery 自动完成 term request GET get term field re
  • Django - 使用“@api_view”将 Django Rest Swagger 架构添加到 DRF 标记函数

    Django 如何将 swagger 自动模式添加到 DRF 标记函数 api view 我有这个功能 view py api view POST swagger auto schema request body PostSerialize
  • 有没有办法限制只允许来自其他 App Engine 服务的传入请求?

    我有四个服务在 App Engine 上的同一个应用程序中运行 我有一个前端 SvelteKit 应用程序和三个后端服务 如果可能的话 我想以这样的方式设置安全性 即后端服务只接受来自前端应用程序的 HTTP 请求 前端应用程序通过其节点服
  • 无法让gunicorn使用Python 3

    我有 Ubuntu NGINX Gunicorn 以及可与 Python 3 设置配合使用的虚拟环境 但我的 Flask 应用程序仍然以 2 7 6 运行 我已系统地按照说明进行操作 但找不到解决方案 Gunicorn 配置文件 progr
  • 如何使用 Python/Django 在 Facebook 中获取(和使用)扩展权限

    我正在尝试编写一个简单的应用程序 让用户授予我的代码写入其页面的 Facebook 流的权限 据我了解 它应该很简单 让用户单击一个按钮 启动一个弹出窗口 其中包含我的 Facebook 应用程序中的页面 在该页面中 他们单击授予的内容流发

随机推荐