Получение ошибки на Heroku для «Django DisallowedHost at / Недопустимый заголовок HTTP_HOST:» даже после добавления URL в ALLOWED_HOST

#django #heroku #django-rest-framework #django-deployment #heroku-ci

#django #heroku #django-rest-framework #django-deployment #heroku-ci

Вопрос:

Итак, я пытаюсь развернуть свой проект django в heroko, и я получил это.

Сообщение об ошибке

Я знаю, в чем здесь проблема, поэтому я добавил URL the-yogify.herokuapp.com ALLOWED_HOST -адрес в settings.py файл моего проекта django.

 ALLOWED_HOSTS = ['http://the-yogify.herokuapp.com/',
'https://the-yogify.herokuapp.com/',
'the-yogify.herokuapp.com',
'the-yogify.herokuapp.com/',
'127.0.0.1']
 

Но ошибка по-прежнему сохраняется.

Что я здесь делаю не так? Я думал, что фактическая ошибка может быть чем-то другим.

Итак, я распечатал журналы heroku, он также показывает ту же ошибку.

 2020-11-24T04:10:53.978271 00:00 app[web.1]: [2020-11-24 04:10:53  0000] [4] [INFO] Starting gunicorn 20.0.4
2020-11-24T04:10:53.979367 00:00 app[web.1]: [2020-11-24 04:10:53  0000] [4] [INFO] Listening at: http://0.0.0.0:25352 (4)
2020-11-24T04:10:53.979552 00:00 app[web.1]: [2020-11-24 04:10:53  0000] [4] [INFO] Using worker: sync
2020-11-24T04:10:53.991703 00:00 app[web.1]: [2020-11-24 04:10:53  0000] [10] [INFO] Booting worker with pid: 10
2020-11-24T04:10:54.026534 00:00 app[web.1]: [2020-11-24 04:10:54  0000] [11] [INFO] Booting worker with pid: 11
2020-11-24T04:10:54.200285 00:00 heroku[web.1]: State changed from starting to up
2020-11-24T04:10:57.847722 00:00 app[web.1]: Invalid HTTP_HOST header: 'the-yogify.herokuapp.com'. You may need to add 'the-yogify.herokuapp.com' to ALLOWED_HOSTS.
2020-11-24T04:10:58.083555 00:00 app[web.1]: Bad Request: /
2020-11-24T04:10:58.092696 00:00 app[web.1]: 10.11.198.97 - - [24/Nov/2020:04:10:58  0000] "GET / HTTP/1.1" 400 59515 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36 Edg/86.0.622.51"
2020-11-24T04:10:58.099353 00:00 heroku[router]: at=info method=GET path="/" host=the-yogify.herokuapp.com request_id=dafb2e9e-fd1c-49d7-8375-fb0b707ef5bc fwd="42.111.13.118" dyno=web.1 connect=1ms service=2796ms status=400 bytes=59767 protocol=https
2020-11-24T04:10:59.830985 00:00 app[web.1]: Invalid HTTP_HOST header: 'the-yogify.herokuapp.com'. You may need to add 'the-yogify.herokuapp.com' to ALLOWED_HOSTS.
 

Спасибо за ваше время.

Ответ №1:

На самом деле, это была моя ошибка.

Я обнаружил, что в settings.py моем проекте django есть 2 файла. Один был в корневом каталоге проекта, а другой внутри <project name>/ . И я вносил все изменения в корень setting.py . Я до сих пор абсолютно не представляю, как и когда другой setting.py файл был создан. И, наконец, как было предложено в сообщениях об ошибках, я исправил проблему, и все в порядке.

Спасибо всем за их ответы.

Ответ №2:

Для устранения дополнительных проблем вы можете посмотреть, выполняется ли он с помощью локальной команды heroku:

 heroku local
 

Мы ожидаем столкнуться с этой ошибкой DisallowedHost здесь. Теперь добавьте ‘0.0.0.0’ к вашим ALLOWED_HOSTS:

settings.py

 ALLOWED_HOSTS = [
    '0.0.0.0',
    'the-yogify.herokuapp.com', # your herokuapp url
    '127.0.0.1'
]
 

Если это работает, то это может быть так просто, как если бы вы не вносили изменения на свой сервер heroku?

 git add -A
git commit -m "Changed ALLOWED_HOSTS in settings.py"
git push heroku master
 

Комментарии:

1. Большое спасибо за ваше предложение, проблема в том, что я в окне… so heroku local не будет запускаться, так как я использую gunicorn, а gunicorn в настоящее время использует fcntl , который не поддерживает Windows.

2. Он должен быть ALLOWED_HOSTS = [ ‘0.0.0.0’, ‘the-yogify.herokuapp.com ‘, ‘127.0.0.1’ ]. В любом случае спасибо.

Ответ №3:

Попробуйте это:

Добавить * ALLOWED_HOST в настройках.

 ALLOWED_HOSTS = [
   '*',
   'http://the-yogify.herokuapp.com/',
   'https://the-yogify.herokuapp.com/',
   'the-yogify.herokuapp.com',
   'the-yogify.herokuapp.com/',
   '127.0.0.1',
]
 

Он скажет django обслуживать все хосты.

Комментарии:

1. удивительно, что он показывает ту же самую ошибку. Не изменяется ни одна буква. : (

2. Итак, я начинаю понимать, что даже сообщение об ошибке касается разрешенных хостов, но реальная проблема где-то в другом месте.

3. И в целях безопасности это решение не рекомендуется, даже если бы оно сработало.

4. Хорошо, слушайте, удалите остальные хосты, которые вы добавили, ALLOWED_HOST и просто сохраните * . Попробуйте.

5. это так странно… Я знаю.