это специальное промежуточное программное обеспечение для Cors:
< pre class="lang-py Prettyprint-override">
Код: Выделить всё
from django.http import HttpResponse
class CrossOriginIsolationMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
# Handle OPTIONS preflight request (for CORS)
if request.method == 'OPTIONS':
response = HttpResponse()
response['Access-Control-Allow-Origin'] = 'http://localhost:3000' # Specify the frontend origin
response['Access-Control-Allow-Credentials'] = 'true'
response['Access-Control-Allow-Headers'] = 'Origin, X-Requested-With, Content-Type, Accept, Authorization'
response['Access-Control-Allow-Methods'] = 'GET, POST, OPTIONS, PUT, DELETE'
return response
response = self.get_response(request)
response['Access-Control-Allow-Origin'] = 'http://localhost:3000'
response['Access-Control-Allow-Credentials'] = 'true'
response['Access-Control-Allow-Headers'] = 'Origin, X-Requested-With, Content-Type, Accept, Authorization'
response['Access-Control-Allow-Methods'] = 'GET, POST, OPTIONS, PUT, DELETE'
if request.path.startswith('/dicomweb/'):
response['Cross-Origin-Opener-Policy'] = 'same-origin'
response['Cross-Origin-Embedder-Policy'] = 'require-corp'
response['Cross-Origin-Resource-Policy'] = 'cross-origin' # Changed to same-origin for better isolation
elif request.path.startswith('/api/'):
response['Cross-Origin-Opener-Policy'] = 'same-origin'
response['Cross-Origin-Embedder-Policy'] = 'require-corp'
response['Cross-Origin-Resource-Policy'] = 'cross-origin'
return response
Код: Выделить всё
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'main.middleware.CrossOriginIsolationMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'csp.middleware.CSPMiddleware',
]
Подробнее здесь: https://stackoverflow.com/questions/790 ... adding-all