Работает ли настройка 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/ .

Другие вопросы по тегам