Я действительно написал этот код.
При попытке выполнить комету между субдоменами и портами, iframe должен иметь то же document.domain
значение, что и родительский фрейм. К сожалению, браузер сохраняет внутреннее имя домена и порт для исходного document.domain
значения. Но геттер и сеттер в javascript ничего не знают о порте. Таким образом, проблема заключается в следующем: если верхняя рама document.domain
находится ('example.com', 80)
, а нижняя рама ('comet.example.com', 80)
, как вы получите в нижней рамки , чтобы быть ('example.com', 80)
, а?
Вы не можете, так как изменение части имени хоста обязательно приведет к установке порта null
, поэтому лучшее, что вы можете сделать, это ('example.com', null)
в нижнем фрейме. Таким образом, верхний фрейм также должен быть установлен на это значение, и настройка document.domain=document.domain
делает именно это. Он изменяет внутреннее представление в браузере с ('example.com', 80)
на, ('example.com', null)
а затем все совпадает, и кросс-портовая / субдоменная связь работает.