Django 1.6.2中的HTTP_HOST标头无效

时间:2014-03-14 21:26:08

标签: django django-1.6

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

  

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

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

电子邮件中的消息是:

  

没有可用的堆栈跟踪

     

请求repr()不可用。

我已在其他SO问题上阅读了有关此问题的其他问题,例如thisthis 还有一篇很棒的博文,比如this

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

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

3 个答案:

答案 0 :(得分:6)

问题不在于django或django应用程序,它在用户方面。

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

显然bing.con并没有指向你的IP地址(除非你是微软的员工,而且你正在转向django:-O)。

我有一些想法:

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

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

  

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

答案 1 :(得分:3)

这是一个完整的日志配置,如果尚未定义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,
        },
    }
}

答案 2 :(得分:1)

根据docs更新了Django 1.9。

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'null': {
            'class': 'logging.NullHandler',
        },
    },
    'loggers': {
        'django.security.DisallowedHost': {
            'handlers': ['null'],
            'propagate': False,
        },
    },
}