【问题标题】:Django DRF best practices to return response headers on every requestDjango DRF 最佳实践在每个请求上返回响应标头
【发布时间】:2026-01-09 08:10:02
【问题描述】:
我正在使用 Django DRF。
在每个请求中添加以下响应标头的最佳方法是什么
Cache-control: no-store, max-age=0
Pragma: no-cache
Strict-Transport-Security: max-age=7776000; includeSubDomains
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
理想情况下,我想在一个地方进行配置。
【问题讨论】:
标签:
python
django
django-rest-framework
cache-control
x-frame-options
【解决方案1】:
来自DRF documentation:
签名:响应(data,status=None,template_name=None,headers=None,content_type=None)
headers:响应中使用的 HTTP 标头字典。
所以就这样使用它:
def foo(request):
# logic
headers = {
'Cache-control': 'no-store, max-age=0',
# ...
'X-Frame-Options': 'DENY'
}
return Response(your_data, headers)
如果您希望在每个请求中都使用它,只需创建您的自定义响应类:
CustomResponse(Response):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.headers= {
'Cache-control': 'no-store, max-age=0',
# ...
'X-Frame-Options': 'DENY'
}
或者,另一种可能更简单的解决方案,创建一个全局 headers 变量并在您的 Response 对象中使用它。