Невозможно проверить расположение окна iframe на сайте с другим источником - PullRequest
0 голосов
/ 18 марта 2020

У меня есть скрипт, который создает такой 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)

Спасибо за помощь!

...