在heroku上部署django应用程序时出现错误:不允许主机位于/Invalid HTTP#u主机头:';电子商务yy.herokuapp.com';
当我想在Heroku上部署我的Django应用程序时,我遇到了如下错误:在heroku上部署django应用程序时出现错误:不允许主机位于/Invalid HTTP#u主机头:';电子商务yy.herokuapp.com';,django,heroku,Django,Heroku,当我想在Heroku上部署我的Django应用程序时,我遇到了如下错误: 不允许主机位于/ 无效的HTTP_主机头:“ecommerceyy.herokuapp.com”。您可能需要在允许的主机中添加“ecommerceyy.herokuapp.com”。 但是,我在production.py中有如下代码: DEBUG = False ALLOWED_HOSTS = ['.herokuapp.com'] 我的wsgi.py如下所示: import os from django.core.
不允许主机位于/
无效的HTTP_主机头:“ecommerceyy.herokuapp.com”。您可能需要在允许的主机中添加“ecommerceyy.herokuapp.com”。
但是,我在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修改到设置文件夹中 基本目录类似于os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(\uu文件))) 在设置文件夹的init.py中,代码类似于
from .base import *
from .production import *
try:
from .local import *
except:
pass
那么我的应用程序出了什么问题呢?我从.base和.local提交,只有push.production到heroku,它是有效的。heroku添加了django_heroku包,该包可以处理这个问题以及其他一些不错的功能 您可以做什么:
- 打开
settings.py
- 顶部添加:
导入django_heroku
- 添加:
django\u heroku.settings(locals())
然后用所有
requirements.txt
、procfiles
和runtime.txt
推送代码,您告诉Django在哪里使用生产设置模块?您的代码只包含对ecommerce.settings
的引用。我将我的setting.py修改到设置文件夹中,基本目录类似于os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(file)))。在设置文件夹的init.py中,代码类似于from.base import*from.production import*try:from.local import*除了:pass您是否在settings.local
中覆盖它?您能否确认您的生产设置已正确加载,并且ALLOWED_HOSTS
实际具有该值?您是否尝试过此操作:ALLOWED_HOSTS=['*.herokuapp.com']
正是我想要的。