Вход в Wordpress в iframe заблокировал перенаправление JavaScript из-за перекрестной политики происхождения - PullRequest
0 голосов
/ 20 марта 2019

нужна помощь!У меня есть веб-сайт WordPress в качестве родительского домена

https://www.example.com

И у меня есть приложение Angular / JavaScript на поддомене того же родителя

https://site.example.com

Я смог решить проблему с CORS, так что Wordpressродительская страница входа (wp-login.php) нормально загружается в iframe поддоменов, но проблема возникает, когда я пытаюсь перезагрузить window.location на основе индекса URL iframe.Вот мой код JavaScript iframe

(function () {
    app
        .controller('ModalGuestPopupController', [
            '$scope', '$rootScope', 'socket', 'ngDialog', '$window',
            function ($scope, $rootScope, socket, ngDialog, $window) {

                $rootScope.$on('ngDialog.opened', function (e, $dialog) {
                    angular.element('.menu .item').tab();

                    angular.element("#login-iframe").get(0).onload = function() {
                        checkLogin($window);
                    };
                });

                function checkLogin($window) {

                    var iframe = angular.element('#login-iframe');
                    var currentUrl = iframe.get(0).contentWindow.location.href;

                    if(currentUrl.indexOf('wp-login.php') == -1) {
                        $window.location.reload();
                    } else {
                        setTimeout(checkLogin, 1000, $window);
                    }
                }

            }]);
})();

Вот сообщение об ошибке на консоли браузера (Chrome и Firefox)

iframe.controller.js:20 

Uncaught DOMException: Blocked a frame with origin "https://subdomain.example.com" from accessing a cross-origin frame.
at checkLogin (https://subdomain.example.com/app/controllers/iframe.controller.js:20:35)
at HTMLIFrameElement.angular.element.get.onload (https://subdomain.example.com/app/controllers/iframe.controller.js:11:25)
...