У меня есть скрипт, который создает такой iframe, и я использую iframe для проверки аутентификации, а затем перенаправляю основную window
:
var target "https://my.website.it"
var iframe = document.createElement("iframe");
iframe.id = "my-frame";
iframe.src = "/my-url/that?redirect=true&target=" + target
iframe.onload = function() {
iframeFn();
};
в функцию iframeFn()
. Я хочу проверить расположение самого iframe для выполнения некоторых элементов управления перед перенаправлением:
function iframeFn() {
var myFrame = document.getElementById("my-frame");
var iframeWindow = myFrame.contentWindow;
if (iframeWindow.location.search.search(/fail/) >= 0) {
window.location = '/'
}
Я помещаю этот сценарий в cdn и использую этот сценарий на веб-сайте с таким же исходным URL-адресом цели перенаправления (https://my.website.it
) и это работает. Но если я пытаюсь использовать этот скрипт на веб-сайте с другим источником (https://different.website.it
), я получаю эту ошибку:
Uncaught DOMException: Blocked a frame with origin "https://different.website.it" from accessing a cross-origin frame.
at reloadInIFrame (https://static.website.it/my-script.js:34:29)
at HTMLIFrameElement.iframe.onload (https://static.website.it/.js:82:5)
в этой строке
if (iframeWindow.location.search.search(/fail/) >= 0) {
Я прочитал это : SecurityError: заблокировал фрейм с источником от доступа к фрейму перекрестного происхождения , но я не могу понять, как использовать window.postMessage
в моем случае.
NB : домен второго уровня одинаков в обоих случаях (website.it
)
Спасибо за помощь!