我收到错误 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.py
、settings/prod.py
、settings/dev.py
来分离生产设置、开发和通用设置。【参考方案2】:
heroku config:set DJANGO_ALLOWED_HOSTS=.example.com,example.herokuapp.com
【讨论】:
【参考方案3】:已经回答了,但我只是想补充一下,如果您在更改 git 远程后立即更改 Heroku 上的应用程序名称,还请确保执行@Leo 回答的内容,因为我也在努力解决它为什么显示浏览器上的 400 响应,直到我发现这个问题。
【讨论】:
以上是关于我收到错误 400:自定义 Heroku 域上的错误请求,但在 foo.herokuapp.com 上工作正常的主要内容,如果未能解决你的问题,请参考以下文章
使用 Django、Heroku 和 Name.com 的错误请求 (400)
Cloudflare 上的 Heroku 自定义域:重定向过多
Heroku 和 Socket.io,400 个错误请求和许多断开连接
ios - Heroku 和 MongoDb 上的自定义解析服务器错误 3080:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项