Контроль доступа позволяет заголовкам не разрешать загрузку содержимого iframe

У меня есть две страницы PHP в одном каталоге. Это edit_page.php а также page.php,

edit_page.php есть редактор wysiwyg, где я могу редактировать содержимое другой страницы через iframe. источник для iframe page.php с запросом ?page_id=XXX,

Когда я иду в page.php?page_id=XXX Я вижу следующие заголовки:

Однако, когда я иду в edit_page.php?page_id=XXX Я вижу следующие ошибки в консоли:

Я попытался поместить заголовки на страницу, отправив запрос только для смеха, хотя я знаю, что он делает запрос, а не отправляет заголовок ответа.... стоит попробовать:P

Заголовки, которые я отправляю:

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST");
header("Access-Control-Allow-Headers: Content-Type");
header("X-Frame-Options: *"); 

Я немного застрял с этим, я никогда не сталкивался с такой проблемой раньше. Если кто-нибудь может указать мне в правильном направлении, это было бы очень признательно.

Также, если кто-то может объяснить, почему это происходит в первую очередь, это было бы здорово. Насколько я понимаю, это будет происходить со страницами из разных источников, например, с загрузкой контента из внешнего источника, расположенного не в одном домене. Но очевидно, что эти два файла находятся не только в одном домене, но и в одном каталоге.

2 ответа

Решение

Хорошо, теперь я чувствую себя глупо....

Я имел:

<iframe name="richTextField" id="wysiwyg" src="page?page_id=1"></iframe>

Вместо:

<iframe name="richTextField" id="wysiwyg" src="page.php?page_id=1"></iframe>

Я думаю, что мозг умирает

Сообщение об ошибке говорит, что https://lifting365.com/EUR/beta/admin/page/ установил X-Frame-Options: sameorigin,

Вы, кажется, пытаетесь установить X-Frame-Options: * (которое не является допустимым значением для заголовка, попробуйте прочитать документацию, чтобы узнать, какие значения допустимы) на http://lifting365.com/something/edit_page?page_id=1,

Итак, первая проблема заключается в том, что вы устанавливаете заголовки на неправильной странице.

Это страница, которую вы хотите отобразить в рамке, которая должна предоставить разрешение. Страница с <iframe> элемент в нем не должен давать себе разрешение на включение iframe!


Ваша вторая проблема в том, что ваш базовый подход к этому неверен.

Вы не должны пытаться снизить ограничения безопасности, чтобы страница https://lifting365.com может быть отображен на http://lifting365.com/. Вы должны переместить все страницы в HTTPS.

Это будет:

  • Сделайте их более безопасными и заслуживающими доверия
  • Поместите их в тот же источник (устраняя проблему, о которой вы спрашиваете)

Также, если кто-то может объяснить, почему это происходит в первую очередь, это было бы здорово.

Одним из факторов, необходимых для того, чтобы два источника были одинаковыми, является схема общих URL. http: а также https: разные.

Другие вопросы по тегам