【问题标题】:Ignoring [Django] ERROR (EXTERNAL IP): Internal Server Error忽略 [Django] 错误(外部 IP):内部服务器错误
【发布时间】:2013-09-17 13:47:04
【问题描述】:

我已经正确设置了我的ALLOWED_HOSTS,但我不断收到来自所有类型的站点的请求,这些请求会导致发送此“[Django] ERROR (EXTERNAL IP): Internal Server Error”。

如何忽略此特定错误?

【问题讨论】:

  • 你运行的是什么版本的 Django?

标签: python django django-settings


【解决方案1】:

在您的 LOGGING 配置中,您可以覆盖处理程序类

'handlers': {
    'mail_admins': {
    'level': 'ERROR',
    'class': 'django.utils.log.MyAdminEmailHandler',
    'include_html': True,
    }
},

现在你可以编写你的 MyAdminEmailHandler 类了。查看AdminEmailHandler中的代码

在发出函数中,如果 (request.META.get('REMOTE_ADDR') 不在 settings.INTERNAL_IPS) 中,就去掉报告

【讨论】:

    【解决方案2】:

    Host: http 标头与所需的ALLOWED_HOSTS 设置不匹配时,Django 的CommonMiddleware 会引发SuspiciousOperation 异常。这个异常没有被特殊处理,所以错误会通过日志系统传播。

    您可以使用 lborgav 的答案以不同方式转移所有错误消息,但如果您只想捕获这个错误,您可以设计一个自定义中间件。

    以下 sn-p 是一个 Middleware 类,您可以将其添加到 settings.py 中的 MIDDLEWARE_CLASSES 以消除此错误。

    MIDDLEWARE_CLASSES = [
        'myapp.middleware.SquashInvalidHostMiddleware',
        ....
    ]
    

    必须出现在django.middleware.common.CommonMiddleware 之前,因为您想检测错误条件的存在并在处理会产生异常的CommonMiddleware 之前立即返回响应。

    # myapp/middleware/__init__.py
    
    from django.core.exceptions import SuspiciousOperation
    from django.views.defaults import server_error
    
    
    class SquashInvalidHostMiddleware(object):
        """
        Middleware class to squash errors due to suspicious Host: headers.
        """
    
        def process_request(self, request):
            """
            Check for denied Hosts.
            """
    
            try:
                # Attempt to obtain Host: from http header.  This may elicit a
                # SuspiciousOperation if Host: doesn't match ALLOWED_HOSTS.
                # Unceremoniously squash these errors to prevent log emails,
                # diverting straight to 500 page.
    
                request.get_host()
            except SuspiciousOperation:
                return server_error(request)
    

    【讨论】:

      猜你喜欢
      • 2015-04-06
      • 1970-01-01
      • 2013-02-26
      • 2023-03-25
      • 2011-03-18
      • 1970-01-01
      • 1970-01-01
      • 2015-06-25
      • 2018-11-23
      相关资源
      最近更新 更多