#python #django #django-rest-framework #cache-control #x-frame-options
Вопрос:
Я использую 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
В идеале я хочу настроить это в одном месте.
Комментарии:
1. Похоже, вам нужно промежуточное программное обеспечение Django .
Ответ №1:
Из документации DRF:
Подпись: Ответ(данные, статус=Нет, имя шаблона=Нет, заголовки=Нет, тип содержимого=Нет)
заголовки: словарь заголовков 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'
}
Или другое решение, возможно, более простое, создайте глобальную переменную заголовков и используйте ее в своем объекте ответа.