使用 Django、Heroku 和 Name.com 的错误请求 (400)

Bad Request (400) using Django, Heroku, and Name.com

我刚刚用 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

大多数 answers/forums 我可以在这 3 个地方找到点来查找错误、ALLOWED_HOSTS、Heroku 自定义域和 DNS 记录。但我就是找不到错误。

我发现的一个建议是检查站点的其他区域。无论我走到哪里,我都会得到同样的错误,例如 example.com/about/

我是否需要在 name.com 进行其他设置?

只需使用命令行将 .example.com 添加到 ALLOWED_HOSTS 设置:

heroku config:set DJANGO_ALLOWED_HOSTS=.example.com,example.herokuapp.com

或使用 heroku 仪表板。

一行解决方案

#ALLOWED_HOSTS = ['localhost', '127.0.0.1','https://tm-sys-dashbobord.herokuapp.com/', config('SERVER', default='127.0.0.1')]

替换

ALLOWED_HOSTS =['*']