【问题标题】:Getting error on Heroku for "Django DisallowedHost at / Invalid HTTP_HOST header:" even after adding the url to ALLOWED_HOST即使在将 url 添加到 ALLOWED_HOST 之后,Heroku 上也会出现“Django DisallowedHost at / Invalid HTTP_HOST header:”错误
【发布时间】:2021-03-06 20:44:54
【问题描述】:

所以我正在尝试将我的 django 项目部署到 heroko,我得到了这个。

我知道这里有什么问题,所以我在我的 django 项目的 settings.py 文件中将 url the-yogify.herokuapp.com 添加到 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']

但错误仍然存​​在。

我在这里做错了什么?我认为实际的错误可能是别的东西。

所以我打印了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.

感谢您的宝贵时间。

【问题讨论】:

    标签: django heroku django-rest-framework django-deployment heroku-ci


    【解决方案1】:

    试试这个:

    在设置中的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 为所有主机提供服务。

    【讨论】:

    • 令人惊讶的是它显示了相同的确切错误。甚至一个字母都没有改变。 :(
    • 所以我开始意识到错误消息是关于允许的主机的,但实际问题出在其他地方。
    • 为了安全起见,即使可行,也不推荐使用此解决方案。
    • 好的,听着,删除您在ALLOWED_HOST 中添加的其余主机,只保留*。试试看。
    • 这太奇怪了……我知道。
    【解决方案2】:

    如果要解决更多问题,您可以查看它是否使用 heroku 本地命令运行:

    heroku local
    

    我们预计会在此处遇到此 DisallowedHost 错误。现在将“0.0.0.0”添加到您的 ALLOWED_HOSTS:

    settings.py

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

    如果这可行,那么它可能就像您没有将更改推送到您的 heroku 服务器一样简单?

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

    【讨论】:

    • 非常感谢您的建议,问题是我在窗口...所以heroku local 不会运行,因为我使用的是 gunicorn,而 gunicorn 现在使用的是 fcntl不支持windows。
    • 应该是 ALLOWED_HOSTS = [ '0.0.0.0', 'the-yogify.herokuapp.com', '127.0.0.1' ]。无论如何,谢谢。
    【解决方案3】:

    其实是我的错。

    我发现我的 django 项目中有 2 个settings.py 文件。一个在项目根目录中,另一个在<project name>/ 中。 我一直在对根setting.py 进行所有更改。 我仍然完全不知道如何以及何时创建另一个 setting.py 文件。 最后,按照错误消息的建议,我解决了这个问题,一切都很好。

    感谢大家的回复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-07
      • 2017-04-01
      • 1970-01-01
      • 2016-10-01
      • 2018-11-25
      • 2017-04-27
      • 2019-02-13
      相关资源
      最近更新 更多