使用 Django、Heroku 和 Name.com 的错误请求 (400)
Posted
技术标签:
【中文标题】使用 Django、Heroku 和 Name.com 的错误请求 (400)【英文标题】:Bad Request (400) using Django, Heroku, and Name.com 【发布时间】:2016-07-30 23:06:38 【问题描述】:我刚刚使用 Heroku 部署了我的 Django 站点,它在 example.herokuapp.com 上运行良好。
我遇到的问题是当我访问 example.com 时,我收到错误请求 (400)。我查看了有关 400 个错误的 Django 文档,但我似乎无法找出问题所在。
我正在使用 Django 1.9.5 并使用 cookiecutter-django 启动该项目。 Name.com 是我的域名注册商。
我的设置的production.py:
ALLOWED_HOSTS = env.list('DJANGO_ALLOWED_HOSTS', default=['example.com'])
我不是 100% 确定我的 ALLOWED_HOSTS 的 DJANGO_ALLOWED_HOSTS 部分是如何工作的,但是当我转到 Heroku 仪表板并查看设置中的配置变量时,我发现 DJANGO_ALLOWED_HOSTS 是 .herokuapp.com
Heroku 自定义域:
Domain Name DNS Target
*.example.com example.herokuapp.com
example.com example.herokuapp.com
www.example.com example.herokuapp.com
Name.com DNS 记录:
Type Host Answer TTL Prio
CNAME www.example.com example.herokuapp.com 300 N/A
CNAME example.com example.herokuapp.com 300 N/A
CNAME *.example.com example.herokuapp.com 300 N/A
在控制台中输入我得到的主机命令:
$ host www.example.com
www.example.com is an alias for example.herokuapp.com
$ host example.com
example is an alias for example.herokuapp.com
我可以在这 3 个地方找到大多数答案/论坛来查找错误、ALLOWED_HOSTS、Heroku 自定义域和 DNS 记录。但我就是无法发现错误。
我发现的一个建议是检查网站的其他区域。无论我去哪里,我都会遇到同样的错误,例如 example.com/about/
我需要在 name.com 上进行其他设置吗?
【问题讨论】:
I get an Error 400: Bad Request on custom Heroku domain, but works fine on foo.herokuapp.com的可能重复 【参考方案1】:单线解决方案
#ALLOWED_HOSTS = ['localhost', '127.0.0.1','https://tm-sys-dashbobord.herokuapp.com/', config('SERVER', default='127.0.0.1')]
替换
ALLOWED_HOSTS =['*']
【讨论】:
【参考方案2】:只需使用命令行将.example.com
添加到ALLOWED_HOSTS
设置:
heroku config:set DJANGO_ALLOWED_HOSTS=.example.com,example.herokuapp.com
或使用 heroku 仪表板。
【讨论】:
成功了。起初你的建议没有用,因为我在它们之间加了一个空格,然后我注意到你没有空格,它起作用了!只是注意这一点,以防其他人犯我犯的同样错误。以上是关于使用 Django、Heroku 和 Name.com 的错误请求 (400)的主要内容,如果未能解决你的问题,请参考以下文章
使用 Django、Heroku 和 Name.com 的错误请求 (400)
如何在 Heroku 上使用 Channels 和 Celery 部署 Django?