Почему политика того же источника блокирует этот вызов javascript в локальном домене? - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть локальный сайт разработчика, работающий на http://mysite.local/ (это админ-сайт Django с установленным Grappelli , если это уместно).

Сайт администратораоткрывает всплывающее окно для некоторых операций (например, с помощью showRelatedObjectLookupPopup())

Из-за предыдущих аналогичных проблем с той же политикой origin-origin (в процессе работы сайт администратора загружает некоторые URL-адреса из домена CDN, что может вызвать его) у нас есть JS-функция «нормализатора», которая явно устанавливает:

document.domain = "mysite.local";

как в родительском, так и во всплывающем окне при загрузке страницы.

Во всплывающем окне содержится ссылка с обработчиком onclickкоторая запускает функцию JS в родительском объекте:

onclick="opener.dismissRelatedLookupPopup(window, '422'); return false;"

Щелчок по этой ссылке в Chrome или FF приводит к аналогичной ошибке браузера:

В доступе запрещено свойство "dismissRelatedLookupPopup" вобъект перекрестного происхождения

или

Заблокирован кадр с источником "http://mysite.local" от доступа к кадру перекрестного происхождения.

Как всплывающие, так и открывающие URL-адреса разделяютПротокол, домен и порт.

Это проблема только локального домена.На сайтах dev / uat / production (т. Е. Dev.mysite.com), для каждого из которых домен установлен как супердомен mysite.com с помощью указанной выше функции нормализатора, всплывающее окно может успешно вызвать функцию JS вparent.

Что мешает ему в локальном домене?Что я пропустил?

1 Ответ

0 голосов
/ 16 ноября 2018

Похоже, что переключение локального домена, согласно первоначальному предложению @charlietfl, действительно решило проблему. Теперь он работает локально как local.mysite.com вместо mysite.local, и ошибка того же источника исчезла. Мне все еще неясно, что вызывало ошибку (было ли это, потому что домен имел только две части, а не три? это то, что исправило это для меня.

...