Answers:
该ALLOWED_HOSTS
列表应包含标准主机名,而不是 URL。省略端口和协议。如果您使用127.0.0.1
,我也将添加localhost
到列表中:
ALLOWED_HOSTS = ['127.0.0.1', 'localhost']
您还可以*
用来匹配任何主机:
ALLOWED_HOSTS = ['*']
引用文档:
此列表中的值可以是完全限定的名称(例如
'www.example.com'
),在这种情况下,它们将与请求的Host
标头完全匹配(不区分大小写,不包括port)。用了一段开头的值可以用作一个子域通配符:'.example.com'
将匹配example.com
,www.example.com
以及任何其他子域example.com
。值'*'
将匹配任何内容;在这种情况下,您有责任提供自己的Host
标头验证(可能在中间件中;如果是,则必须在中首先列出该中间件MIDDLEWARE_CLASSES
)。
大胆强调我。
您收到的状态400响应是由于主机标头与该列表中的任何值都不匹配时引发的SuspiciousOperation
异常。
False
。也许您可以发布一个新问题?
./manage.py collectstatic
可能会执行。
对我来说,我没有设置USE_X_FORWARDED_HOST
为true便得到了这个错误。从文档:
仅当使用设置此标头的代理时,才应启用此功能。
我的托管服务写在其文档中明确表示,该设置必须被使用,如果我忘了我得到这个400错误。
我遇到了同样的问题,没有一个答案可以解决我的问题,为了解决这种情况,最好通过在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, }, }, }
并尝试tail -f /tmp/debug.log
。当您看到问题时,比盲目调试要容易得多。
我的问题即将
无效的HTTP_HOST标头:“ pt_web:8000”。根据RFC 1034/1035,提供的域名无效。
并通过添加解决它proxy_set_header Host $host;
,以Nginx的配置文件,通过启用端口转发USE_X_FORWARDED_PORT = True
的settings.py
(这是因为在我的情况我已经听过请求Nginx的端口8080
,并把它传递给guni
上港8000
对我来说,我已经在127.0.0.1上使用了xampp,在127.0.1.1上使用了django,并且我一直在尝试添加主机
ALLOWED_HOSTS = ['127.0.0.1', 'localhost', 'www.yourdomain.com', '*', '127.0.1.1']
并且我遇到相同的错误或(400)错误的请求
所以我将URL更改为127.0.1.1 :(使用的端口)/ project和瞧!
您必须检查您的虚拟网络地址是什么,对我来说,因为我在Linux上使用bitnami django堆栈2.2.3-1,所以我可以检查django使用的端口。如果您有一个错误(400错误的请求),那么我猜django在不同的虚拟网络上..祝您好运
随着DEBUG = False
在你的设置文件,你还需要ALLOWED_HOST列表设置。尝试包括ALLOWED_HOST = ['127.0.0.1', 'localhost', 'www.yourdomain.com']
否则,您可能会收到来自django的Bad Request(400)错误消息。
导航到设置并找到base.py文件将允许的主机设置为ALLOWED_HOSTS = ['*']
ALLOWED_HOSTS