Межпроектное тестирование iframe на локальном хосте с разными портами

#django #iframe

Вопрос:

Я относительно новичок в iFrame, и то, что я пытаюсь сделать, — это загрузить проект A в iframe то, что находится в проекте B. Проект A выполняется как проект Django на локальном хосте:8000, а проект B-как отдельный проект Django на локальном хосте:8001. Внутри проекта B у меня есть шаблон Django со следующим содержимым:

 <iframe src="http://127.0.0.1:8000" height="500px" width="500px"></iframe>
 

Проблема в том, что вместо просмотра содержимого домашней страницы проекта я вижу сообщение об ошибке, в котором говорится, что:

127.0.0.1 отказано в подключении

Есть ли что-нибудь, чего мне ужасно не хватает?

Комментарии:

1. Нет, я отредактировал вопрос. Проблема не в рекурсивных вызовах

2. Ах, это защита от взлома с помощью Джанго. Видишь docs.djangoproject.com/en/dev/ref/clickjacking

3. Ага) Я уже это понял 🙂 Но вы можете оставить свой комментарий в качестве ответа, я отмечу это галочкой

Ответ №1:

Это защита от взлома по умолчанию [Django docs] с помощью запуска Django в действие (отлично подходит для нас!), Но это мешает вам загружать iframe в другом проекте. Существуют различные варианты решения этой проблемы:

  1. Если вы хотите, чтобы все ваши страницы из вашего проекта были помещены в iframe, вы можете удалить 'django.middleware.clickjacking.XFrameOptionsMiddleware' их из своих MIDDLEWARE настроек:
     MIDDLEWARE = [
         ...
         'django.middleware.clickjacking.XFrameOptionsMiddleware',
         ...
     ] 
  2. Если это только для определенных видов, вы можете использовать xframe_options_exempt декоратор:
     from django.views.decorators.clickjacking import xframe_options_exempt
    
    @xframe_options_exempt
    def some_view(request):
        ...