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 пайдаланылады.