Прежде чем начать свой вопрос, я сослался на сообщение 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
Мой вопрос: почему значение заголовка сервера изменяется и при изменении появляется как пустая строка, но когда само значение заголовка удаляется, я вижу его в заголовке ответа. Что мне здесь не хватает?
Кроме того, я попытался переместить строку активации промежуточного программного обеспечения на первую и последнюю позиции, на случай, если что-то будет переопределено. Все та же проблема.