Обновление ноябрь 2016
Более простой способ отключить политику одного и того же происхождения в Chrome - запустить ее со следующими флагами:
google-chrome --disable-web-security --user-data-dir
Обновление:
Помните о том, где вы запрашиваете повышенные привилегии. Первый метод работает, как и ожидалось, главное - запросить повышенные привилегии в той же области, где вы будете его использовать (в той же функции, в глобальной области ...), в другой области он не будет работать.
Я обновил пример с рабочим кодом.
Это есть в документации:
Привилегии предоставляются только в рамках запрашивающей функции. В эту область входят все функции, вызываемые запрашивающей функцией. Когда скрипт покидает запрашивающую функцию, привилегии больше не применяются.
http://www.mozilla.org/projects/security/components/signed-scripts.html
Я пытаюсь сделать то же самое для сайтов внутренней сети моей компании (у нас есть 47 различных доменов, основанных на расположении сервера, и будет легко отключить «одинаковую политику происхождения» для этих сайтов только у сотрудников Firefox).
В соответствии с документацией с сайта mozilla, эти методы должны работать ... Я обнаружил, что это верно для Firefox 2, я тестировал в FF3 и FF4 и, похоже, не работает. Вы должны попробовать это, Maibe il будет работать для вас, я все еще ищу решение
Метод 1.
Редактировать about:config
и установить signed.applets.codebase_principal_support
на true
(это позволит неподписанным сценариям запрашивать повышенные привилегии)
В вашем родительском скрипте запрос повышенных привилегий:
<сценарий <br>
тип = "текст / JavaScript">
функция xss ()
{
попробуй {
netscape.security.PrivilegeManager.enablePrivilege ( "UniversalBrowserRead");
} catch (e)
{
оповещение (е); // console.log (e), если у вас есть firebug
}
Оповещение (document.getElementById ( 'кадр') contentWindow.document.); // console.log ()
}
3. Теперь, когда вы загрузите страницу, FF попросит у вас разрешения на использование скрипта:
Разрешите, и вы должны получить предупреждение с текстом: [object HTMLDocument]
Перед выполнением любой модификации, если я пытаюсь получить доступ к ....contentWindow.document
, я получаю эту ошибку:
Error: A script from "http://example.com" was denied UniversalBrowserRead privileges.
После того, как я получил это:
Permission denied for <http://example.com> to get property Window.document from <http://example_1.com>.
Если вам нравится работать в командной строке, вы можете пропустить шаги 1 и 3 и отредактировать файл presf.js (в Linux: /home/$yourUser/.mozilla/firefox/$yourProfile/prefs.js) и добавить 4 строки
user_pref("signed.applets.codebase_principal_support", true);
user_pref("capability.principal.codebase.p0.granted", "UniversalBrowserRead");
user_pref("capability.principal.codebase.p0.id", "http://example.com");
user_pref("capability.principal.codebase.p0.subjectName", "");
Метод 2.
Попробуйте добавить политику, позволяющую сайтам обходить SOP для этого редактирования prefs.js, и добавьте следующие строки:
user_pref("capability.policy.policynames", "example");
user_pref("capability.policy.example.HTMLDocument", "allAccess");
user_pref("capability.policy.example.sites", "http://example.com http://example_1.com");
К сожалению, даже метод 2 не справляется с работой.
Я все еще ищу решение, Если я найду что-то новое, я обновлю ответ.