Встраивание веб-приложения с помощью 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, чего я успешно достиг. Позже я не смогу выполнять какие-либо операции с загруженным приложением.