Sobes.tech
Middle+
27

Ішкі iframe (мысалы, карта немесе видео) негізгі сайттың кукилерімен қалай өзара әрекеттеседі? Әр түрлі көздер арасында байланыс ұйымдастыру қалай?

Сұралған компаниялар
ООО Делай мебель

AI-дан жауап

sobes.tech AI

Ішкі iframe, мысалы карта немесе видео бар, басқа көзден (домен, протокол, порт) мазмұнды жүктейді, және браузер оны негізгі сайттан қауіпсіздік саясаты бойынша оқшаулайды (Same-Origin Policy).

Кукилермен өзара әрекеттесу:

  • Кукилер орнатылады және тек оларды жасаған домен үшін қол жетімді.
  • Егер iframe және негізгі сайт бір доменде болса, онда кукилер екеуіне де қол жетімді.
  • Егер домендер әртүрлі болса, iframe негізгі сайттың кукилерін тікелей оқи алмайды немесе өзгерте алмайды.

Әртүрлі көздер арасындағы байланыс:

  • iframe мен негізгі сайт арасында деректер алмасу үшін window.postMessage механизмі пайдаланылады.
  • Бұл API қауіпсіз түрде хабарламаларды терезелер/фреймдер арасында жіберуге мүмкіндік береді, тіпті олар әртүрлі домендерде болса да.

postMessage қолданудың мысалы:

// Негізгі терезеде
const iframe = document.getElementById('myIframe');
iframe.contentWindow.postMessage('Сәлем iframe', 'https://iframe-domain.com');

window.addEventListener('message', event => {
  if (event.origin === 'https://iframe-domain.com') {
    console.log('Iframe-тан хабарлама:', event.data);
  }
});

// Iframe-да
window.addEventListener('message', event => {
  if (event.origin === 'https://main-site.com') {
    console.log('Негізгі сайттан хабарлама:', event.data);
    event.source.postMessage('Сәлем негізгі сайт', event.origin);
  }
});

Осылайша, кукилер домендер бойынша оқшауланған, ал iframe мен негізгі сайт арасында деректер алмасу үшін postMessage пайдаланылады.