Работает ли настройка document.domain во всех (большинстве) браузерах?
В той же документации о политике происхождения сказано следующее:
Существует одно исключение из того же правила происхождения. Сценарий может установить значение document.domain в суффикс текущего домена. Если это так, более короткий домен используется для последующих проверок происхождения. Например, предположим, что скрипт в документе по адресу http://store.company.com/dir/other.html выполняет следующий оператор:
document.domain = "company.com";
После выполнения этого оператора страница пройдет проверку источника с помощью http://company.com/dir/page.html. Однако по той же причине, company.com не может установить document.domain в othercompany.com.
Все ли популярные браузеры поддерживают это? Если нет, то какие нет?
3 ответа
Firefox 2,3, IE6,7,8, Chrome и Safari 2 и 3, Opera 9 все поддерживают document.domain;
Скорее всего, подойдут и другие "более новые" браузеры, однако это те, которые я на самом деле тестировал мой код (который использует document.domain)
Домен документа должен быть в нижнем регистре и правила таковы
// Actual domain is "www.foo.com"
document.domain = "foo.com"; // this is valid
// Actual domain is "bar.foo.com"
document.domain = "www.foo.com"; // this is invalid, "bar.foo.com" is not a subdomain of "www.foo.com"
// Actual domain is "blah.bar.foo.com"
document.domain = "bar.foo.com" // Ok
document.domain = "foo.com" // Still ok
document.domain = "bar.foo.com" // Invalid, you can't change it back to a more specific domain.
Начиная с версии 115, Chromium Engine объявил устаревшей функцию document.domain по соображениям безопасности. Поэтому, по крайней мере, Edge и Chrome больше не будут полностью поддерживать эту функцию.
Установщик для document.domain отключен и может быть полностью удален в будущем.
Более подробную информацию см. здесь: https://developer.chrome.com/blog/document-domain-setter-deprecation/ .