【问题标题】:Deploy django app on heroku has error: DisallowedHost at / Invalid HTTP_HOST header: 'ecommerceyy.herokuapp.com'在heroku上部署django应用程序有错误:DisallowedHost at / Invalid HTTP_HOST header: 'ecommerceyy.herokuapp.com'
【发布时间】:2020-07-29 18:01:07
【问题描述】:

当我想在 Heroku 上部署我的 Django 应用程序时,我遇到了如下错误:

DisallowedHost at / Invalid HTTP_HOST header: 'ecommerceyy.herokuapp.com'. You may need to add 'ecommerceyy.herokuapp.com' to ALLOWED_HOSTS.

但是,我在 production.py 中有如下代码:

DEBUG = False

ALLOWED_HOSTS = ['.herokuapp.com']

而我的 wsgi.py 是这样的:

import os 

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ecommerce.settings")

application = get_wsgi_application()

并像加密 ssl/tls https 一样:

CORS_REPLACE_HTTPS_REFERER      = True
HOST_SCHEME                     = "https://"
SECURE_PROXY_SSL_HEADER         = ('HTTP_X_FORWARDED_PROTO', 'https')
SECURE_SSL_REDIRECT             = True
SESSION_COOKIE_SECURE           = True
CSRF_COOKIE_SECURE              = True
SECURE_HSTS_INCLUDE_SUBDOMAINS  = True
SECURE_HSTS_SECONDS             = 1000000
SECURE_FRAME_DENY               = True

我将我的 setting.py 修改为设置文件夹

BASE_DIR 就像os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

在settings文件夹的init.py中,代码就像来自

from .base import *
from .production import *

try:
    from .local import *
except:
    pass

那么我的应用出了什么问题?

【问题讨论】:

  • 你在哪里告诉 Django 使用production 设置模块?您的代码仅包含对 ecommerce.settings 的引用。
  • 我将 setting.py 修改为设置文件夹,BASE_DIR 类似于 os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(文件))))。在settings文件夹的init.py中,代码类似于from .base import * from .production import * try: from .local import * except: pass
  • 您是否在settings.local 中覆盖它?您能否确认您的生产设置已正确加载并且ALLOWED_HOSTS 实际上具有该值?
  • 你试过这个吗:ALLOWED_HOSTS = ['*.herokuapp.com']

标签: django heroku


【解决方案1】:

Heroku 添加了 django_heroku 包来处理这个问题以及其他几个不错的功能。

https://devcenter.heroku.com/articles/django-app-configuration

【讨论】:

  • 正是我想要的。
【解决方案2】:

我从 .base 和 .local 提交,只将 .production 推送到 heroku,它可以工作。

【讨论】:

    【解决方案3】:

    你可以做什么:

    • 打开settings.py
    • 顶部添加:import django_heroku
    • 地址:django_heroku.settings(locals())

    然后使用所有requirements.txtprocfilesruntime.txt 推送代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-07
      • 2021-03-06
      • 1970-01-01
      • 2016-04-15
      • 2020-01-23
      • 2020-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多