使用 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?

Django/Celery 和 CloudAMQP/Heroku 的连接错误

在 Heroku 上部署 React 和 Django

Heroku 和 Django 出现 405 错误

使用 heroku 在生产中部署媒体和静态的 django 设置和 url 应该是啥样的?