对每个请求 return 响应 headers 的 Django DRF 最佳实践

Django DRF best practices to return response headers on every request

我正在使用 Django DRF。

将以下响应添加为每个请求的一部分的最佳方法是什么headers

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

理想情况下,我想在一处进行配置。

来自DRF documentation

Signature: Response(data, status=None, template_name=None, headers=None, content_type=None)

headers: A dictionary of HTTP headers to use in the response.

所以就像这样使用它:

def foo(request):
    # logic
    headers = {
        'Cache-control': 'no-store, max-age=0',
        # ...
        'X-Frame-Options': 'DENY'
    }
    return Response(your_data, headers)

如果您希望在每个请求中都使用它,只需创建您的自定义响应 class:

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 变量并在您的响应中使用它 object。