我正在尝试从django rest框架响应中删除Server
标头,但我找不到一个简单的方法,所以我创建了一个中间件来删除它。
这是我的第一次尝试:
middleware.py
class RemoveHeaders(object):
def process_response(self, request, response):
response['Server'] = ''
return response
这个中间件工作正常,但问题是它用空字符串填充server
标头而不删除它。所以我尝试了下一个:
class RemoveHeaders(object):
def process_response(self, request, response):
del response['Server']
return response
但它不起作用。标题继续server
。
如何删除server
标题?或者您是否知道另一种选择?
感谢
已更新,这些是我的中间件,也许有人覆盖server
标题,如果它不存在?
MIDDLEWARE_CLASSES = (
'corsheaders.middleware.CorsMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'my_api.middleware.RemoveHeaders'
)
答案 0 :(得分:0)
我只是遇到了完全相同的问题。您使用的方法
del response['Server']
是正确的!
但是,您需要将中间件移到第一个。由于其他中间件将在构造响应后添加标头,因此应用程序的顺序是自下而上的。您的中间件必须是第一个具有“最后一句话”的人。