主机名什么时候应该在 ALLOWED_HOSTS

When should the hostname be in ALLOWED_HOSTS

我曾经在使用 localhost127.0.0.1 以外的主机名时离开 ALLOWED_HOSTS = [] 没有问题,今天我遇到了这个错误: Invalid HTTP_HOST header 要求我将主机名添加到 ALLOWED_HOSTS,即使我从 /etc/hosts 中注释掉了其他主机名。 我尝试了其他项目,它使用相同的设置。

为什么现在发生了? ALLOWED_HOSTS有什么用?还有为什么之前没填就成功了?

最近,Django released 1.10.3, 1.9.11 and 1.8.16 修复了安全问题。

在这些版本之后,即使 settings.DEBUG=True,Django 也会检查 settings.ALLOWED_HOSTS。这可以防止 DNS 重新绑定攻击。

如果ALLOWED_HOSTS为空,那么Django会使用['localhost', '127.0.0.1', '::1']。但是,如果您使用任何其他主机,您现在需要将其添加到 ALLOWED_HOSTS,即使 DEBUGTrue