Встраивание веб-приложения с помощью Iframe

У меня есть приложение на Django (A), и один из моих клиентов хочет встроить его в свое приложение (B), используя iframe. Клиентское приложение может быть создано на любом фреймворке, и мы не можем контролировать его код. Кроме того, оба приложения размещены в совершенно разных доменах. Чтобы включить эту настройку, нам необходимо точно настроить параметры в нашем приложении Django A, чтобы разрешить встраивание в клиентское приложение B.

Ниже приведен тестовый фрагмент HTML-кода, используемый для встраивания веб-приложения, которое я разместил на бесплатном хостинге.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>URL Loader</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            text-align: center;
            margin: 20px;
        }
        iframe {
            width: 100%;
            height: 80vh;
            border: 1px solid #ccc;
        }
    </style>
</head>
<body>
    <h2>Loaded URL in iFrame</h2>
    <iframe 
        id="urlFrame" 
        src="https:/xyz.com"
    ></iframe>
</body>
</html>

Конфигурация Django:

  • Python 3.6

  • Джанго: 2.2.5

Внесенные изменения:

Обновлены настройки Django, позволяющие домену загружать приложение. Некоторые из приведенных ниже настроек следует усилить для обеспечения безопасности в рабочей среде, поскольку они предназначены только для целей POC.:

  • ОТЛАДКА = True

  • Удалил X_FRAME_OPTIONS = "ЗАПРЕТИТЬ" и использовал CSP_FRAME_ANCESTORS = ("'self'", "*")

  • CORS_ALLOW_ALL_ORIGINS = Истина

  • CORS_ALLOW_CREDENTIALS = Истина

  • CSRF_TRUSTED_ORIGINS = ['https://*']

  • CSRF_USE_SESSIONS = Истина

  • Добавлено ‘corsheaders.middleware.Промежуточное программное обеспечение CorsMiddleware' в промежуточном программном обеспечении

Страница входа в систему загружается успешно, но при попытке войти в систему я сталкиваюсь со следующей ошибкой:

Сообщение об ошибке

Я попытался установить для SESSION_COOKIE_SAMESITE и CSRF_COOKIE_SAMESITE значение "Нет", но это не поддерживается в старой версии django

Моя цель - загрузить приложение в iframe, чего я успешно достиг. Позже я не смогу выполнять какие-либо операции с загруженным приложением.

Вернуться на верх