6

我从我的 Django Web 应用程序收到很多 Invalid HTTP_HOST 标头消息-

[Django] 错误:无效的 HTTP_HOST 标头:'www.bing.com'。您可能需要将 u'www.bing.com' 添加到 ALLOWED_HOSTS

它来自已知网站(如bing.com, google.com)以及非常随机的网站(www2t.biglobe.ne.jp, proxy.me5b.ru)。

电子邮件中的信息是:

没有可用的堆栈跟踪

请求 repr() 不可用。

我已经阅读了关于其他 SO 问题的其他问题,例如thisthis以及像这样 的一篇不错的博客文章。

但它们似乎都表明这个问题应该在 Django 1.6 中得到解决。但是,我正在运行 Django 1.6.2 并且仍然看到此错误。我正在使用 Apache WSGI,应用程序托管在 AWS Elasticbeanstalk 上。

我可能可以抑制这些警报消息,但我应该首先期待它们吗?

4

3 回答 3

7

问题不在于 django 或 django 应用程序,而在于用户端。

您的 django 应用程序配置为仅在 example.com 上接受请求(ALLOWED_HOSTS),然后,如果任何其他域指向相同的 ip 并且任何用户请求 webithe 那么 django 将引发该异常。

显然 bing.con 没有指向您的 IP 地址(除非您是微软的员工并且您正在将 bing 迁移到 django :-O)。

我有一些假设:

  • 用户或机器人正在您的网站上进行一些未经授权的测试。
  • 由 ISP、公司或家庭的 DNS 拥有的私有 DNS 服务器被黑客入侵或误认,并且条目错误
  • 恶意软件在用户操作系统的“hosts”文件中添加了一些指向您的 IP 的条目。
  • 或 bing.com 指向您网站的任何其他原因

不要注意这个错误(我在我的网站上忽略了这个),因为 django 的想法是正确的:

我没有配置为提供此域,抱歉,我不会为您提供任何内容。

于 2014-03-14T22:57:24.157 回答
4

这是一个完整的日志配置,如果尚未定义 LOGGING,可以将其剪切并粘贴到 Django 1.6 设置文件中。这是@Devang 作为上面评论发布的片段的后续内容。

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'null': {
            'class': 'django.utils.log.NullHandler',
        },
    },
    'loggers': {
        'django.security.DisallowedHost': {
            'handlers': ['null'],
            'propagate': False,
        },
    }
}
于 2014-09-11T12:45:49.227 回答
3

根据docs为 Django 1.9 更新。

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'null': {
            'class': 'logging.NullHandler',
        },
    },
    'loggers': {
        'django.security.DisallowedHost': {
            'handlers': ['null'],
            'propagate': False,
        },
    },
}
于 2016-01-24T07:33:00.243 回答