Блокировка доступа фрейма с происхождением "http://127.0.0.1:8000" к кросс-оригинальному фрейму. ((Django cors headers, S3 cors policy))
https://sparta-games.net/games/list/47/ <-- !!! Слишком громкий звук !!! Я пытаюсь уменьшить звук iframe или всей страницы.
Точное сообщение об ошибке:
47/:644 Uncaught DOMException: Failed to read a named property 'AudioContext' from 'Window': Blocked a frame with origin "http://127.0.0.1:8000" from accessing a cross-origin frame.
at iframe_element.onload (http://127.0.0.1:8000/games/list/47/:644:58)
Iframe - это Unity WebGL игра, которая выходит из S3 bucket.
Я использую Django, EC2, mobaXterm, S3, nginx, gunicorn, RDS. (Windows11)
Мои настройки Django settings.py:
INSTALLED_APPS = [
...,
"corsheaders",
...,
]
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
...,
'django.middleware.common.CommonMiddleware',
...,
]
X_FRAME_OPTIONS = 'SAMEORIGIN'
CORS_ALLOWED_ORIGINS = [
"http://127.0.0.1:8000",
]
S3 CORS policy:
{
"CORSRules": [
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET",
"PUT",
"HEAD"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": [
"x-amz-server-side-encryption",
"x-amz-request-id",
"x-amz-id-2"
],
"MaxAgeSeconds": 3000
}
]
}
версии:
Django==4.2
django-cors-headers==4.3.1
Отправка заголовка через views.py, как показано ниже, тоже не помогла.
def my_view(request):
response = JsonResponse({'message': 'Hello, world!'})
response['Access-Control-Allow-Origin'] = 'http://127.0.0.1:8000'
response['Access-Control-Allow-Methods'] = 'GET, POST, OPTIONS'
response['Access-Control-Allow-Headers'] = 'Content-Type'
return response
Я не могу найти точный случай, подобный этому. Рекурсивно попросил ChatGPT решить его.
django-cors-headers, s3 policy, direct sending headers, cors whitelist,... не понял проблемы.
На самом деле, это также происходит, когда пользователь изменяет и отправляет любое содержимое этой страницы.(CORS-штука)
Я занимаюсь этой проблемой почти 4 дня. Пожалуйста, помогите мне.