Veb-xabarlar - Web Messaging - Wikipedia

Veb-xabarlar yoki hujjatlararo xabar almashish, bu API yilda kiritilgan WHATWG HTML5 spetsifikatsiya loyihasi, hujjatlar turli manbalar yoki manbalar domenlari bo'yicha bir-biri bilan aloqa o'rnatishga imkon beradi[1] a-da ko'rsatilgan veb-brauzer. HTML5 dan oldin veb-brauzerlarga ruxsat berilmagan saytlararo skript, xavfsizlik hujumlaridan himoya qilish. Ushbu amaliyot dushman bo'lmagan sahifalar o'rtasida ham aloqani taqiqlab qo'ydi va har qanday turdagi hujjatlarni o'zaro ishlashini qiyinlashtirdi.[1][2] Hujjatlararo xabar almashish skriptlarning ushbu chegaralar bo'ylab o'zaro ta'sir qilishiga imkon beradi, shu bilan birga xavfsizlikni rudimentar darajasini ta'minlaydi.

Talablar va atributlar

Messaging API-laridan foydalanish postMessage usuli, oddiy matnli xabarlarni bir domendan boshqasiga yuborish mumkin, masalan. ota-ona hujjatidan IFRAME.[3] Buning uchun muallif avval quyidagilarni olishni talab qiladi Oyna qabul qiluvchi hujjatning ob'ekti. Natijada, xabarlar quyidagilarga joylashtirilishi mumkin:[2]

  • jo'natuvchi hujjat oynasidagi boshqa ramkalar yoki iframkalar
  • Windows jo'natuvchi hujjati JavaScript qo'ng'iroqlari orqali aniq ochiladi
  • jo'natuvchi hujjatning asosiy oynasi
  • jo'natuvchi hujjatini ochadigan oyna

Xabar tadbir qabul qilish quyidagi xususiyatlarga ega:

  • ma'lumotlar - Kiruvchi xabarning ma'lumotlari yoki haqiqiy tarkibi.
  • kelib chiqishi - jo'natuvchi hujjatning kelib chiqishi. Bunga odatda sxema, xost nomi va port kiradi. U yo'l yoki fragment identifikatorini o'z ichiga olmaydi.[1]
  • manba - the WindowProxy hujjat qaerdan kelganligi (manba oynasi).

postMessage blokirovka qiluvchi qo'ng'iroq emas; xabarlar asenkron tarzda ishlov beriladi.[4]

Misol

Biz A hujjatini yuklashni xohlaymiz example.net yuklangan B hujjati bilan aloqa o'rnatish example.com ichiga iframe yoki ochiladigan oyna.[1] The JavaScript A hujjati uchun quyidagicha ko'rinadi:

var o = hujjat.getElementsByTagName("iframe")[0];o.contentWindow.postMessage("Salom B", 'http://example.com/');

Bizning kelib chiqishimiz contentWindow ob'ekt uzatiladi postMessage. Bu mos kelishi kerak kelib chiqishi biz bilan aloqa qilishni istagan hujjatning (bu holda, B hujjati). Aks holda, xavfsizlik xatosi tashlanadi va skript to'xtaydi.[3] B hujjati uchun JavaScript quyidagicha ko'rinadi:

funktsiya qabul qiluvchi(tadbir) {    agar (tadbir.kelib chiqishi == 'http://example.net') {        agar (tadbir.ma'lumotlar == "Salom B") {            tadbir.manba.postMessage(- Salom A, yaxshimisiz?, tadbir.kelib chiqishi);        }        boshqa {            ogohlantirish(tadbir.ma'lumotlar);        }    }}oyna.addEventListener("xabar", qabul qiluvchi, yolg'on);

Hodisani tinglovchi A hujjatidan xabarlarni qabul qilish uchun o'rnatildi kelib chiqishi xususiyati, keyin yuboruvchining domeni kutilgan domen ekanligini tekshiradi. So'ngra B hujjati xabarni ko'rib chiqadi yoki foydalanuvchiga ko'rsatishi yoki o'z navbatida A hujjati uchun o'ziga xos xabar bilan javob berishi.[1]

Xavfsizlik

Kelib chiqishi yomonligini tekshirish hujjataro xabar almashinuvini qo'llaydigan dasturlar uchun xavf tug'dirishi mumkin.[5] Chet el domenlarining zararli kodlaridan himoya qilish uchun mualliflar kelib chiqishi xabarlarni qabul qilishni kutadigan domenlardan xabarlar qabul qilinishini ta'minlash xususiyati. Kiruvchi ma'lumotlarning formatini kutilgan formatga mos kelishini tekshirish kerak.[1]

Qo'llab-quvvatlash

Hujjatlararo xabar almashishni qo'llab-quvvatlash amaldagi versiyalarida mavjud Internet Explorer, Mozilla Firefox, Safari, Gugl xrom, Opera, Opera Mini, Opera Mobile va Android veb-brauzeri.[6] API-ni qo'llab-quvvatlash Trident, Gekko, WebKit va Presto dvigatellar.[7]

Shuningdek qarang

Adabiyotlar

Tashqi havolalar

  • HTML5 veb-xabarlari bo'yicha tavsiya
  • HTML5 veb-xabarlari spetsifikatsiyasi
  • Hujjatlararo xabar almashish - HTML loyihasi standarti, WHATWG
  • WebKit DOM dasturlash mavzulari - Hujjatlararo o'zaro xabar almashish, Apple Developer kutubxonasi[o'lik havola ]
  • Eng, Kris (2010-05-17), Xulosa ichida HTML5 xavfsizligi, Verakod
  • Hujjatlararo xabar almashishni qachon ishlatishim mumkin?, CanIUse
  • HTML5-da qo'llab-quvvatlanadigan xususiyatlarni tanlash