我是新来的django-1.6。当我使用DEBUG = True运行django服务器时,它运行得非常完美。但是,当我在设置文件中将DEBUG更改为False时,服务器停止,并在命令提示符上给出以下错误:
CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.在我将ALLOWED_HOSTS更改为["http://127.0.0.1:8000",]之后,在浏览器中我得到了错误:
Bad Request (400)在没有调试模式的情况下可以运行Django吗?
发布于 2013-11-09 12:14:22
列表应该包含完全限定的主机名,而不是 urls。省去端口和协议。如果您使用的是127.0.0.1,我也会将localhost添加到列表中:
ALLOWED_HOSTS = ['127.0.0.1', 'localhost']您还可以使用*来匹配任何主机:
ALLOWED_HOSTS = ['*']引用文件:
此列表中的值可以是完全限定名(例如,
'www.example.com'),在这种情况下,它们将与请求的 header完全匹配(不区分大小写,不包括端口)。以句点开头的值可以用作子域通配符:'.example.com'将匹配example.com、www.example.com和example.com的任何其他子域。'*'的值将匹配任何内容;在本例中,您负责提供自己对Host头的验证(可能在中间件中;如果是,则必须首先在MIDDLEWARE_CLASSES中列出该中间件)。
大胆强调我的。
当主机头与列表中的值不匹配时,会引发状态400响应。
发布于 2018-07-22 06:51:13
我也有同样的问题,没有一个答案解决了我的问题。为了解决这种情况,最好通过向settings.py临时添加以下配置来启用日志记录。
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': '/tmp/debug.log',
},
},
'loggers': {
'django': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
},
},
}当您看到这个问题时,它比盲目调试更容易处理。
我的问题是:
无效的HTTP_HOST头:‘pt_HTTP_HOST:8000’。根据RFC 1034/1035.提供的域名无效。
我通过将proxy_set_header Host $host;添加到Nginx配置文件并在settings.py中使用USE_X_FORWARDED_PORT = True启用端口转发来解决这个问题(因为在我的示例中,我监听了Nginx端口8080上的请求,并在端口8000上传递给guni )。
发布于 2016-07-30 22:41:48
对我来说,由于没有将USE_X_FORWARDED_HOST设置为true,我得到了这个错误。从医生那里:
只有当正在使用设置此标头的代理时,才应启用此选项。
我的托管服务写在他们的文档中明确表示必须使用这个设置,如果我忘记了它,我会得到这个400个错误。
https://stackoverflow.com/questions/19875789
复制相似问题