我收到错误 400:自定义 Heroku 域上的错误请求,但在 foo.herokuapp.com 上工作正常

Posted

技术标签:

【中文标题】我收到错误 400:自定义 Heroku 域上的错误请求,但在 foo.herokuapp.com 上工作正常【英文标题】:I get an Error 400: Bad Request on custom Heroku domain, but works fine on foo.herokuapp.com 【发布时间】:2014-06-08 18:49:06 【问题描述】:

我刚刚将一个 Django 项目推送到 Heroku。它在 http://rtd-staging.herokuapp.com/rtd2015/ 上运行良好,但由于某种原因,我收到 400 错误:当我使用以下方式访问它时出现错误请求:http://staging.researchthroughdesign.org/rtd2015/

我知道 CNAME 设置正确,因为在推送到 heroku 的过程中,它说 Heroku 应用程序已经崩溃,所以它肯定指向正确的应用程序。

这是错误日志:

2014-04-23T18:32:29.981976+00:00 heroku[router]: at=info method=GET path=/ host=staging.researchthroughdesign.org request_id=b8fe3ac9-e062-493b-b3bf-862c60e4001b fwd="82.34.146.252" dyno=web.1 connect=1ms service=7ms status=400 bytes=226

【问题讨论】:

如果 DEBUG 为 False,您是否在 settings.py 中验证了您的 ALLOWED_HOSTS? 谢谢@GabrielAmram,这是因为我的 ALLOWED_HOSTS 中没有 .researchthroughdesign.org。 【参考方案1】:

您必须将您的网站域设置为允许的主机。把它放在你的settings.py:

ALLOWED_HOSTS = [".herokuapp.com", ".researchthroughdesign.org"]

【讨论】:

经过几天寻找解决我的问题的方法,就是这样! settings.py 在哪里? settings.py 位于设置文件夹内,该文件夹位于应用程序文件夹内。就我而言,我使用settings/base.pysettings/prod.pysettings/dev.py 来分离生产设置、开发和通用设置。【参考方案2】:
heroku config:set DJANGO_ALLOWED_HOSTS=.example.com,example.herokuapp.com

【讨论】:

【参考方案3】:

已经回答了,但我只是想补充一下,如果您在更改 git 远程后立即更改 Heroku 上的应用程序名称,还请确保执行@Leo 回答的内容,因为我也在努力解决它为什么显示浏览器上的 400 响应,直到我发现这个问题。

【讨论】:

以上是关于我收到错误 400:自定义 Heroku 域上的错误请求,但在 foo.herokuapp.com 上工作正常的主要内容,如果未能解决你的问题,请参考以下文章

Heroku 上的错误请求 400 Django 应用程序

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

Cloudflare 上的 Heroku 自定义域:重定向过多

Heroku 自定义域不起作用

Heroku 和 Socket.io,400 个错误请求和许多断开连接

ios - Heroku 和 MongoDb 上的自定义解析服务器错误 3080:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项