Привет, кодеры, в качестве моего первого блога или статьи я постараюсь объяснить эту удивительную тему (и малоизвестную) в нескольких словах и непредвзято, пожалуйста. Если у вас есть отзывы, я принимаю их.
Что такое PostMessage?
Это способ отправки информации из одного места в другое, более безопасный и более «родной»; Например: из окна во всплывающее окно или в iframe или просто в другое окно.
Таким образом, мы можем разумно обойти политику одного и того же происхождения 🤓.
Как это использовать?
📨 Для отправки:
const popup = window.open(/* popup details */); // When the popup has fully loaded, if not blocked by a popup blocker: // This does nothing, assuming the window hasn't changed its location. popup.postMessage( message, target, ); //this example comes from developer.mozilla
Это способ применить к вашему проекту, как вы можете видеть, метод postMessage имеет два параметра для отправки нам, сообщение — это данные, а цель — это место, куда оно прибыло.
Примечание: сообщение должно быть строковым параметром.
📪 Чтобы получить:
window.addEventListener( "message", (event) => { // Do we trust the sender of this message? (might be // different from what we originally opened, for example). if (event.origin !== "http://example.com") return; // event.source is popup // event.data is "hi there yourself! the secret response is: rheeeeet!" } ); //this example comes from developer.mozilla
И вот, мы получили информацию, но… что значит этот параметр?:
- «сообщение»: это имя или признак, в котором мы ссылались на событие, отправленное недавно в другом окне (событие postMessage).
- событие: приносит такие вещи, как источник и данные.
⚠️ Важно знать: как только вы сможете это сделать, важно подтвердить происхождение информации/данных, которые мы получим. И старайтесь избегать использования «*». Вредоносный сайт может изменить расположение окна без вашего ведома, а значит, может перехватить данные, отправляемые с помощью postMessage.
Резюме:
В качестве резюме я просто скажу, что этот метод очень эффективен, если вы проверяете и применяете элементы управления безопасностью, потому что злоумышленники могут использовать межсайтовый скриптинг для атак на наши сайты, пожалуйста, будьте внимательны к этому. Но как разработчик я могу сказать, что это очень эффективный способ передачи данных между оконными объектами.
Спасибо, что читаете мне, кодеры и… Удачного кодирования! 🤘🏻