【发布时间】: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']