您的位置:

解决DisallowedHost("dubious")在django出现报错

  发布时间:2023-03-22 11:55:13
如果你的 Django 应用收到了来自未在 ALLOWED_HOSTS 中指定的主机的请求,它将抛出一个 DisallowedHost 错误。如何解决要解决 DisallowedHost 错误,你需要做的是在 Django 的 ALLOWED_HOSTS 设置中添加收到请求的主机的主机名。使用例子以下是一个示例文件,其中包含了如何在 ALLOWED_HOSTS 中添加主机名的示例以下是添加主机名的示例你还可以使用 extend() 方法来添加多个主机名注意:在生产环境中,你应该只在 ALLOWED_HOSTS 中指定具体的主机名,而不是将 ALLOWED_HOSTS 设置为 ['*']。将 ALLOWED_HOSTS 设置为 ['*'] 可能会导致安全漏洞,应仅在开发环境中使用。

报错的原因

DisallowedHost("dubious") 错误通常是由于你在 Django 的 ALLOWED_HOSTS 设置中没有指定某个主机名而引起的。

在 Django 的 settings.py 中,ALLOWED_HOSTS 是一个列表,其中包含你的 Django 应用所允许的主机名。如果你的 Django 应用收到了来自未在 ALLOWED_HOSTS 中指定的主机的请求,它将抛出一个 DisallowedHost 错误。

举个例子,假设你的 Django 应用的 ALLOWED_HOSTS 设置如下:

ALLOWED_HOSTS = ['example.com', 'www.example.com']

如果你的应用收到了来自 example.org 的请求,它将抛出一个 DisallowedHost 错误。

要解决这个问题,可以在 ALLOWED_HOSTS 中添加收到请求的主机的主机名,或者将 ALLOWED_HOSTS 设置为 ['*'],以允许所有主机。但是,请注意,将 ALLOWED_HOSTS 设置为 ['*'] 可能会导致安全漏洞,应仅在开发环境中使用。

如何解决

要解决 DisallowedHost 错误,你需要做的是在 Django 的 ALLOWED_HOSTS 设置中添加收到请求的主机的主机名。

例如,如果你的应用收到了来自 example.org 的请求,并且你的 ALLOWED_HOSTS 设置如下:

ALLOWED_HOSTS = ['example.com', 'www.example.com']

你可以通过在 ALLOWED_HOSTS 中添加 example.org 来解决此问题:

ALLOWED_HOSTS = ['example.com', 'www.example.com', 'example.org']

请注意,你应该只在生产环境中指定具体的主机名,而不是将 ALLOWED_HOSTS 设置为 ['*']。将 ALLOWED_HOSTS 设置为 ['*'] 可能会导致安全漏洞,应仅在开发环境中使用。

使用例子

以下是一个示例 Django settings.py 文件,其中包含了如何在 ALLOWED_HOSTS 中添加主机名的示例:


ALLOWED_HOSTS = ['example.com', 'www.example.com']

# 以下是添加主机名的示例
ALLOWED_HOSTS.append('subdomain.example.com')
ALLOWED_HOSTS.append('otherdomain.com')

# 你还可以使用 extend() 方法来添加多个主机名
ALLOWED_HOSTS.extend(['subdomain1.example.com', 'subdomain2.example.com'])

注意:在生产环境中,你应该只在 ALLOWED_HOSTS 中指定具体的主机名,而不是将 ALLOWED_HOSTS 设置为 ['*']。将 ALLOWED_HOSTS 设置为 ['*'] 可能会导致安全漏洞,应仅在开发环境中使用。