gpt4 book ai didi

django - 删除 Django Rest Framework 响应中的 header

转载 作者:行者123 更新时间:2023-12-02 09:16:05 24 4
gpt4 key购买 nike

我正在尝试从 django Rest Framework 响应中删除 Server header ,但我没有找到简单的方法,因此我创建了一个中间件来删除它。

这是我的第一次尝试:

中间件.py

class RemoveHeaders(object):
def process_response(self, request, response):
response['Server'] = ''
return response

这个中间件工作正常,但问题是它用空字符串填充 server header ,而不是删除它。所以我尝试了下一个:

class RemoveHeaders(object):
def process_response(self, request, response):
del response['Server']
return response

但是这不起作用。 server header 继续。

如何删除server header ?或者您知道其他选择吗?谢谢

已更新,这些是我的中间件,也许有人覆盖了 server header ,如果它不存在?

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'
)

最佳答案

我刚刚遇到了完全相同的问题。您的方法

del response['Server']

正确!

但是,您需要将中间件移至第一个。由于其他中间件会在构建响应后添加 header ,因此应用程序的顺序是自下而上的。您的中间件必须是第一个拥有“最终决定权”的中间件。

关于django - 删除 Django Rest Framework 响应中的 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50493701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com