Удалить заголовок ответа «Сервер» в Django framework - V3.0.5 - PullRequest
0 голосов
/ 21 апреля 2020

Прежде чем начать свой вопрос, я сослался на сообщение stackoverflow - Удалить заголовок в django rest framework response .

Пожалуйста, найдите код промежуточного программного обеспечения и settings.py ниже (см. к django документам промежуточного программного обеспечения ):

middleware.py :

class SimpleMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response
        # One-time configuration and initialization.

    def __call__(self, request):
        response = self.get_response(request)
        response.__setitem__('Server', '')
        return response

settings.py


MIDDLEWARE = [
    ....,
    ....,
    'middleware_demo.middleware.SimpleMiddleware',
]

С помощью приведенного выше кода я получаю ответ сервера с заголовком сервера, установленным в пустую строку, как показано ниже. Что, как и ожидалось, не раскрывает подробности заголовка сервера:

HTTP/1.1 200 OK
Date: Tue, 21 Apr 2020 12:55:25 GMT
Content-Type: text/html
Server: 
X-Frame-Options: DENY
Content-Length: 16351
X-Content-Type-Options: nosniff

Моя цель состоит в том, чтобы полностью удалить заголовок, и попробовал 2 способа для того же самого в middleware.py :

Метод 1 - официальные документы

class SimpleMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response
        # One-time configuration and initialization.

    def __call__(self, request):
        response = self.get_response(request)
        response.__delitem__('Server')
        return response

Метод 2 - упомянутый блог stackoverflow - Удалить заголовок в django ответ остального фреймворка

class SimpleMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response
        # One-time configuration and initialization.

    def __call__(self, request):
        response = self.get_response(request)
        del response['Server']
        return response

Но в ответе по-прежнему установлен заголовок сервера и отображаются подробные сведения о версии, как показано ниже:

HTTP/1.1 200 OK
Date: Tue, 21 Apr 2020 13:00:26 GMT
Server: WSGIServer/0.2 CPython/3.6.5
Content-Type: text/html
X-Frame-Options: DENY
Content-Length: 16351
X-Content-Type-Options: nosniff

Мой вопрос: почему значение заголовка сервера изменяется и при изменении появляется как пустая строка, но когда само значение заголовка удаляется, я вижу его в заголовке ответа. Что мне здесь не хватает?

Кроме того, я попытался переместить строку активации промежуточного программного обеспечения на первую и последнюю позиции, на случай, если что-то будет переопределено. Все та же проблема.

...