加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 忽略[Django]错误(外部IP):内部服务器错误

发布时间:2020-12-20 11:29:48 所属栏目:Python 来源:网络整理
导读:我已经正确设置了ALLOWED_HOSTS,但我不断收到来自所有类型网站的请求,这些请求会导致发送“[Django] ERROR(外部IP):内部服务器错误”. 如何忽略此特定错误? 解决方法 当Host:http标头与所需的ALLOWED_HOSTS设置不匹配时,Django的CommonMiddleware中会出现
我已经正确设置了ALLOWED_HOSTS,但我不断收到来自所有类型网站的请求,这些请求会导致发送“[Django] ERROR(外部IP):内部服务器错误”.

如何忽略此特定错误?

解决方法

当Host:http标头与所需的ALLOWED_HOSTS设置不匹配时,Django的CommonMiddleware中会出现SuspiciousOperation异常.此异常未经过特殊处理,因此错误将通过日志记录系统传播.

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

以下代码片段是一个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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读