Почему приложение React DRF, развертываемое с Heroku, выдает ошибку заголовка Invalid HTTP_HOST? - PullRequest
1 голос
/ 23 сентября 2019

Я пытаюсь развернуть свое первое приложение React DRF с Heroku.Он был успешно развернут (в разделе «Просмотр журнала выпуска» в Heroku Dashboard отображается «Нет применений миграции»).Но когда я пытался зайти на сайт, он выдает сообщение об ошибке

Invalid HTTP_HOST header: 'mySite-test.herokuapp.com'. You may need to add 'mySite-test.herokuapp.com' to ALLOWED_HOSTS.

Хотя я добавил то же самое в settings.py.Я использую Gunicorn версии 19.9.0 и whitenoise версии 4.1.3.

Что я сделал до сих пор

import os
import django_heroku

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

DEBUG = True

ALLOWED_HOSTS = ['http://127.0.0.1:8000/', 'https://mySite-test.herokuapp.com/']


MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'personal_blog.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'build')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'personal_blog.wsgi.application'

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'build/static'),
]
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
django_heroku.settings(locals())

wsgi.py

import os
from whitenoise import WhiteNoise
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'personal_blog.settings')

application = get_wsgi_application()
application = WhiteNoise(application, root='build/static')

и в корневом каталоге проекта urls.py

from django.views.generic import TemplateView

urlpatterns = [
    path('', include('accounts.api.urls')),
    re_path('.*', TemplateView.as_view(template_name='index.html'))

]
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Здесьмоя структура папок

enter image description here

Кто-то, пожалуйста, укажите мне, что я здесь не так делаю.

Ответы [ 2 ]

1 голос
/ 23 сентября 2019

Основная проблема была с версией Python.После обновления python с 3.7.1 до 3.7.4 и изменения lillte в settings.py до

ALLOWED_HOSTS = ['127.0.0.1', '.herokuapp.com']

Все работает нормальноТеперь.

0 голосов
/ 23 сентября 2019

Вы не должны включать протокол http в разрешенные хосты, это должно быть только имя домена и, возможно, порт, хотя я не совсем уверен.

Изменить

 ALLOWED_HOSTS = ['http://127.0.0.1:8000/', 'https://mySite-test.herokuapp.com/']
*От 1005 * до
ALLOWED_HOSTS = ['127.0.0.1', 'mySite-test.herokuapp.com']
...