python - Django DRF 最佳实践在每个请求上返回响应标头
问题描述
我正在使用 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
理想情况下,我想在一个地方配置它。
解决方案
来自DRF 文档:
签名:响应(数据,状态=无,模板名称=无,标题=无,内容类型=无)
headers:在响应中使用的 HTTP 标头字典。
所以只需像这样使用它:
def foo(request):
# logic
headers = {
'Cache-control': 'no-store, max-age=0',
# ...
'X-Frame-Options': 'DENY'
}
return Response(your_data, headers)
如果您希望在每个请求中都使用它,只需创建您的自定义 Response 类:
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 对象中使用它。
推荐阅读
- html - CSS 绝对位置和 webKitMask 剪切内容
- python - 具有客户用户模型的 DRF 多用户
- python - Flask 未显示字段错误
- c# - 无法按数据表分组
- angular - Ionic 4 生产构建失败“错误:没有为 ComponentPageA 找到组件工厂,您是否将其添加到 @NgModule.entryComponents?”
- java - 我可以在一个对象中实现一个arrayList吗
- python - 如何解压tweepy提供的JSON
- graphviz - 点中两条记录的排名相同
- python - 与python中子进程打开的`/dev/tty`交互
- c - 如何在 C 中为自定义 Wireshark 解剖器创建新名称?