Загружать субдомены в iframes, избегая при этом создания рамок из разных источников при помощи document.domain - PullRequest
1 голос
/ 09 апреля 2019

У меня есть мультисайт Wordpress с несколькими установками WooCommerce.Я пытаюсь получить сводную информацию о всех регионах установки через iFrames:

  • ru.foo.com
  • au.foo.com
  • eu.foo.com

и т. д.

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

jQuery(document).ready(function($) {
        /*If the user is on the main dashboard...*/
        if(window.location.href.indexOf("https://foo.com/wp-admin/network/") > -1) {
            console.log('Admin Dashboard - Activating global iFrame stats');
            /*Create area for iFrames*/
            $('#dashboard-widgets').after('<div class="iframe-container"><strong>Cross Network Stats (US, UK, AU, EU)</strong></div>');
            /*United States*/
            /*Add US iFrame (on same domain - working)*/
            $('.iframe-container').append('<div><strong style="font-size: 2em;">United States:</strong><br><br><iframe src="https://foo.com/wp-admin/edit.php?post_type=shop_order" width="100%" height="450px"></iframe></div>');
            /*United Kingdom*/
            /*Add UK iFrame (on subdomain - not working)*/
            $('.iframe-container').append('<div><strong style="font-size: 2em;">United Kingdom:</strong><br><br><iframe src="https://en.foo.com/wp-admin/edit.php?post_type=shop_order" width="100%" height="450px"></iframe></div>');
        }
    });

ПервыйiFrame работает так, как задумано, а вторая - нет, как и в iFrame, и создает ошибку безопасности X-Frame:


Загрузка запрещена X-Frame-Options: https://en.foo.com/wp-admin/edit.php?post_type=shop_order не разрешает кадрирование между источниками.


Я читал, что этого можно избежать с помощью 'document.domain'.Поэтому я ввел следующий код в нижний колонтитул глобального администратора:

echo '<script>document.domain = "foo.com";</script>';

Тем не менее, я по-прежнему сталкиваюсь с той же проблемой, что и раньше.

Нужно ли запускать document.domain как функцию javascript при вызове iFrames через jQuery?

1 Ответ

0 голосов
/ 09 апреля 2019

Вы должны изменить заголовок Content-Security-Policy.

Content-Security-Policy: frame-ancestors 'self' *.foo.com

Этот ответ углубляется в детали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...