Что делает document.domain = document.domain?
Компонент JS на стороне клиента Orbited (сервер кометы) требует, чтобы сервер работал в другом домене или порт к самому JS, вы должны выполнить
document.domain = document.domain;
перед загрузкой любого другого JS. (Смотрите документация.)
Что это делает? Это похоже на NOOP! (Я проверил, и это действительно необходимо.)
Ответы
Ответ 1
Я действительно написал этот код.
При попытке выполнить комбо-субдомен/порт компилятор iframe должен иметь то же значение document.domain
, что и родительский фрейм. К сожалению, браузер сохраняет имя домена AND и внутренне для исходного значения document.domain
. Но getter и setter в 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)
, а затем все работает, и связь между портами/субдоменными кадрами работает.
Ответ 2
Браузеры различают
(a) document.domain, если явно не установлен
а также
(b) document.domain, когда явно задано
... даже если они возвращают одинаковое значение.
Явная установка значения указывает на намерение "сотрудничать" с script на другом подобласте (в том же родительском домене).
Если BOTH родительская страница и внешний script явно устанавливают document.domain на одно и то же значение, ограничение политики одного и того же происхождения может быть обойдено, и каждый script может получить доступ ко всем объектам и свойствам, контексты друг друга.
Ответ 3
Я нашел следующую информацию на этом сайте: devguru. Более конкретно, здесь цитата:
Это свойство устанавливает или возвращает доменное имя сервера, из которого документ возник. Это значение по умолчанию к доменному имени сервера, который документ был получен, но может быть изменен на суффикс (и только суффикс) этого имени. Это позволяет совместное использование свойств script, безопасность позволяя, между доставленными документами с разных серверов, обеспечивая их совместно использовать тот же суффикс домена.
Мне кажется, что он позволяет выполнять межсайтовый скриптинг для одного домена (даже если поддомен отличается).
Я бы предположил, что если вы не коснитесь document.domain, js-движок разрешит другим javascripts из того же домена. С помощью этого свойства вы сможете развернуть его в других поддоменах, например, в состоянии орбитальных документов.
Ответ 4
document.domain
извлекает значение по умолчанию из фактического URL, если оно явно не задано. Браузеры будут записывать, если document.domain
пришел по умолчанию из URL-адреса или если он был явно установлен. Оба должны быть по умолчанию для одного и того же домена или оба должны быть явно установлены в один и тот же домен, чтобы это работало. Если один из них по умолчанию, и один явно установлен, оба соответствуют, если они читаются, обе страницы будут по-прежнему запрещать разговаривать друг с другом.
Смотрите: https://developer.mozilla.org/en-US/docs/DOM/document.domain