【问题标题】:400 Error when visiting Django domain in production在生产中访问 Django 域时出现 400 错误
【发布时间】:2018-08-27 15:14:49
【问题描述】:

我有一个已部署到 Heroku 生产环境的 Django 应用程序。我有一个设置包,其中包含不同的本地和生产设置。在我的本地设置中,我将 DEBUG 设置为 True 并且我能够运行服务器并加载主页。在我的生产设置模块中,除了将 DEBUG 设置为 False 并将主机名添加到 ALLOWED_HOSTS 之外,一切都是相同的。出于某种原因,当我尝试使用生产设置访问该站点(本地或在 Heroku 上)时,我收到了 400 Bad Request。我认为我的主机名格式可能有问题,但我不确定:

ALLOWED_HOSTS = ['https://test_app.herokuapp.com/','http://127.0.0.1:8000/'] 

什么可能导致 400 错误? url的格式应该不同吗?

【问题讨论】:

  • 尝试检查你的heroku日志heroku logs -t --app app-name
  • 你用ALLOWED_HOSTS = ['test_app.herokuapp.com','127.0.0.1:8000]测试过吗?
  • @ABDULNIYASPM 是的,这也行不通
  • @AnjaneyuluBatta 和heroku logs --tail 有区别吗?
  • 你也可以试试ALLOWED_HOSTS =['.herokuapp.com','localhost']

标签: python django heroku django-settings


【解决方案1】:

在上面的 cmets 上展开:

由于 Heroku 使用不同的完全限定域名来进行审核、暂存和生产应用程序,我通常发现最好使用通配符,省略应用程序的名称,但包括 .herokuapp.com(注意句点)。

示例:ALLOWED_HOSTS = ['.herokuapp.com']

【讨论】:

  • ['*'] 违背了生产环境中设置的全部目的。
  • @BurhanKhalid 那么使用['*'] 是标准做法吗?
  • 这是非常糟糕的做法,尤其是在生产环境中。
  • @BurhanKhalid 然后我将其保留为ALLOWED_HOSTS = ['.herokuapp.com']。使用星号可能应该从答案中删除。
  • @BurhanKhalid 我同意你的看法(这就是我喜欢指定的原因)。另一个答案的重点是 Heroku 的自定义域服务应该提供这种保护。但是,他们似乎在大约三个月前从官方指南中删除了 ['*']:github.com/heroku/python-getting-started/commit/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多