Bad Request(400)使用Django,Heroku和Name.com

Bri*_*ead 4 python django dns heroku cookiecutter

我刚刚用Heroku部署了我的Django网站,它在example.herokuapp.com上工作就好了.

我遇到的问题是当我去example.com时,我得到Bad Request(400).我查看了有关400个错误的Django文档,我似乎无法弄清楚什么是错误的.

我正在使用Django 1.9.5并使用cookiecutter-django启动该项目.Name.com是我的域名注册商.

我的设置的production.py:

ALLOWED_HOSTS = env.list('DJANGO_ALLOWED_HOSTS', default=['example.com'])
Run Code Online (Sandbox Code Playgroud)

我不是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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

在控制台中,我输入我得到的主机命令:

$ 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
Run Code Online (Sandbox Code Playgroud)

我可以找到大多数答案/论坛指向这3个地方,以找到错误,ALLOWED_HOSTS,Heroku自定义域和DNS记录.但我无法发现错误.

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

我需要在name.com上设置其他内容吗?

mat*_*gus 8

只需使用命令行添加.example.comALLOWED_HOSTS设置:

heroku config:set DJANGO_ALLOWED_HOSTS=.example.com,example.herokuapp.com
Run Code Online (Sandbox Code Playgroud)

或使用heroku仪表板.

  • 做到了。最初,您的建议没有用,因为我在它们之间加了一个空格,然后我注意到您没有空格,它起作用了!只是要注意这一点,以防其他人犯与我相同的错误。 (2认同)