Я действительно написал этот код.
При попытке выполнить комету между субдоменами и портами, 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)
а затем все совпадает, и кросс-портовая / субдоменная связь работает.
Браузеры различают (а) document.domain, если он явно не установлен, и (b) document.domain, если явно установлен ... даже если они возвращают одно и то же значение.
Явная установка значения указывает на намерение «сотрудничать» со сценарием в другом поддомене (в том же родительском домене).
Если как родительская страница, так и внешний сценарий явно устанавливают для document.domain одно и то же значение, ограничение политики одного и того же происхождения может быть обойдено, и каждый сценарий может получить доступ ко всем (в противном случае ограниченным) объектам и свойствам контекстов друг друга.
источник
На этом сайте я нашел следующую информацию: devguru . Более конкретно, вот цитата:
Мне кажется, что он позволяет межсайтовый скриптинг для одного и того же домена (даже если субдомен другой).
Я бы предположил, что если вы не коснетесь document.domain, движок js разрешит только другие javascripts из того же домена. С этим свойством вы сможете выполнять развертывание в других поддоменах, таких как состояние орбитальных документов.
источник
document.domain = document.domain
это не NOOP.document.domain
Тянет по умолчанию от фактического URL , если явно не установлено. Браузеры будут записывать, еслиdocument.domain
он был задан по умолчанию из URL-адреса или был явно установлен. Оба должны быть по умолчанию для одного и того же домена, или оба должны быть явно настроены на один и тот же домен, чтобы это работало. Если один по умолчанию, а другой явно установлен, оба совпадают при чтении, двум страницам все равно будет запрещено разговаривать друг с другом.См. Https://developer.mozilla.org/en-US/docs/DOM/document.domain
источник