2026-01-17 16:34:39 +08:00
|
|
|
export function getTrustedOrigin() {
|
|
|
|
|
return window.location.origin;
|
|
|
|
|
}
|
|
|
|
|
|
2026-02-18 23:48:49 +08:00
|
|
|
export function getIframeTargetOrigin() {
|
2026-01-17 16:34:39 +08:00
|
|
|
return getTrustedOrigin();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function postToIframe(iframe, payload, source, targetOrigin = null) {
|
|
|
|
|
if (!iframe?.contentWindow) return false;
|
|
|
|
|
const message = source ? { source, ...payload } : payload;
|
|
|
|
|
const origin = targetOrigin || getTrustedOrigin();
|
|
|
|
|
iframe.contentWindow.postMessage(message, origin);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function isTrustedIframeEvent(event, iframe) {
|
|
|
|
|
return !!iframe && event.origin === getTrustedOrigin() && event.source === iframe.contentWindow;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function isTrustedMessage(event, iframe, expectedSource) {
|
|
|
|
|
if (!isTrustedIframeEvent(event, iframe)) return false;
|
|
|
|
|
if (expectedSource && event?.data?.source !== expectedSource) return false;
|
|
|
|
|
return true;
|
|
|
|
|
}
|