UnisKB/apps/common/middleware/static_headers_middleware.py

34 lines
1.5 KiB
Python
Raw Normal View History

2024-03-13 13:50:57 +00:00
# coding=utf-8
"""
@project: maxkb
@Author
@file static_headers_middleware.py
@date2024/3/13 18:26
@desc:
"""
from django.utils.deprecation import MiddlewareMixin
2024-07-25 03:54:41 +00:00
from common.cache_data.application_access_token_cache import get_application_access_token
2024-03-13 13:50:57 +00:00
class StaticHeadersMiddleware(MiddlewareMixin):
def process_response(self, request, response):
if request.path.startswith('/ui/chat/'):
access_token = request.path.replace('/ui/chat/', '')
2024-07-25 02:41:38 +00:00
application_access_token = get_application_access_token(access_token, True)
if application_access_token is not None:
2024-07-25 02:41:38 +00:00
white_active = application_access_token.get('white_active', False)
white_list = application_access_token.get('white_list', [])
application_icon = application_access_token.get('application_icon')
application_name = application_access_token.get('application_name')
if white_active:
# 添加自定义的响应头
response[
2024-07-25 02:41:38 +00:00
'Content-Security-Policy'] = f'frame-ancestors {" ".join(white_list)}'
response.content = (response.content.decode('utf-8').replace(
'<link rel="icon" href="/ui/favicon.ico" />',
2024-07-25 02:41:38 +00:00
f'<link rel="icon" href="{application_icon}" />')
.replace('<title>MaxKB</title>', f'<title>{application_name}</title>').encode(
"utf-8"))
2024-03-13 13:50:57 +00:00
return response