iFrame window.postMessage - данные всегда являются пустой строкой - PullRequest
5 голосов
/ 21 марта 2020

Я пытаюсь отправить сообщение в iFrame в моем приложении angular. Сообщение отправляется в iFrame; однако переданные данные всегда принимаются в виде пустой строки в iFrame.

Есть идеи, почему это может быть?

Примечание: оба приложения работают локально.

В моем приложении angular:

html:

<iframe id="authIFrame" src="http://127.0.0.1:9000"></iframe>

ts :

const wn = document.getElementById('authIFrame').contentWindow;
wn.postMessage({authToken: 'abcdefg'},  '*');

В iFrame:

if (window.addEventListener) {
    window.addEventListener('message', handleMessage, false);
  } else if (window.attachEvent) {
    window.attachEvent('onmessage', handleMessage());
  }

  function handleMessage(event) {
 //HERE>>>>  event.data is always "" (empty string)
    const {data, origin, source} = event;

    if (isOriginAllowed(origin)) {

      const {method, accessToken, idToken, userData} = data;

      if (method === 'SET') {
        return setIdentityData(accessToken, idToken, userData);
      } else if (method === 'GET') {
        return getIdentityData();
      }
    }
  }

Я также пытался структурировать данные, передаваемые в iFrame. Это не помогло.

Мое единственное предположение, что, возможно, браузер отказывается отправлять данные, так как мое приложение не работает по https ...

...