Saya sebenarnya menulis kode ini.
Saat mencoba melakukan cross-subdomain / port comet, iframe harus memiliki nilai yang sama document.domain
dengan kerangka induk. Sayangnya, browser menyimpan nama domain DAN port secara internal untuk nilai aslinya document.domain
. Tapi pengambil dan penyetel di javascript tidak tahu apa-apa tentang port. Jadi masalahnya adalah ini: jika bingkai atas document.domain
adalah ('example.com', 80)
, dan bingkai bawah adalah ('comet.example.com', 80)
, bagaimana Anda mendapatkan bingkai bawah ('example.com', 80)
juga?
Anda tidak bisa, karena mengubah bagian nama host akan menyebabkan port diatur ke null
, jadi yang terbaik yang dapat Anda lakukan adalah ('example.com', null)
di bingkai bawah. Jadi bingkai atas juga perlu disetel ke nilai itu, dan setelan document.domain=document.domain
tidak hanya itu. Ini mengubah representasi internal di browser dari ('example.com', 80)
menjadi ('example.com', null)
dan kemudian semuanya cocok dan komunikasi bingkai lintas-port / subdomain berfungsi.