Отключить Firefox же политики происхождения
Я разрабатываю инструмент для локальных исследований, который требует от меня отключить политику Firefox по той же причине (с точки зрения доступа к сценариям, меня не волнуют междоменные запросы).
Точнее говоря, я хочу, чтобы скрипты в домене хоста могли получать доступ к произвольным элементам в любых фреймах, встроенных в страницу, независимо от их домена.
Я знаю предыдущие вопросы и ответы, в которых упоминалось расширение CORS FF, но это не то, что мне нужно, поскольку оно разрешает только CORS, но не доступ к сценариям.
Если это не может быть сделано легко, я также был бы признателен за любые идеи, которые указывают мне на конкретную часть кода src FF, которую я могу изменить, чтобы отключить SOP, чтобы я мог перекомпилировать FF.
8 ответов
Существует расширение Firefox, которое добавляет заголовки CORS к любому HTTP-ответу, работающему в последней версии Firefox (сборка 36.0.1), выпущенной 5 марта 2015 года. Я протестировал его, и он работает как на Windows 7, так и на Mavericks. Я проведу вас по шагам, чтобы все заработало.
1) Получение расширения
Вы можете скачать xpi отсюда (авторская сборка) или отсюда (зеркало, может не обновляться).
Или загрузите файлы с GitHub. Теперь это также на Firefox Marketplace: скачать здесь. В этом случае аддон устанавливается после нажатия кнопки "Установить", и вы можете перейти к шагу 4.
Если вы скачали xpi, вы можете перейти к шагу 3. Если вы скачали zip с GitHub, перейдите к шагу 2.
2) Построение xpi
Вам нужно извлечь zip-файл, попасть в папку "cors-везде-firefox-addon-master", выбрать все элементы и сжать их. Затем переименуйте созданный почтовый индекс в *.xpi
Примечание. Если вы используете графический интерфейс OS X, он может создавать некоторые скрытые файлы, поэтому вам лучше использовать командную строку.
3) Установка xpi
Вы можете просто перетащить xpi в firefox или перейти к: "about:addons", нажать на шестеренку в верхнем правом углу и выбрать "install add on from file", затем выбрать файл.xpi. Теперь перезапустите Firefox.
4) заставить его работать
Теперь расширение не будет работать по умолчанию. Вам нужно перетащить значок расширения на панель расширений, но не волнуйтесь. Есть картинки!
- Нажмите на меню Firefox
- Нажмите на Настроить
- Перетащите CorsE в бар
- Теперь нажмите на значок, когда он станет зеленым, заголовки CORS будут добавлены к любому HTTP-ответу.
5) Проверка работоспособности
JQuery
$.get( "http://example.com/", function( data ) {
console.log (data);
});
JavaScript
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
console.log(xmlhttp.responseText);
}
}
xmlhttp.open("GET","http://example.com/");
xmlhttp.send();
6) Заключительные соображения
Обратите внимание, что https на http не допускается.
Там может быть способ обойти это, но это находится за рамками вопроса.
about:config -> security.fileuri.strict_origin_policy -> false
Я понял, что мой старый ответ опровергнут, потому что я не указал, как конкретно отключить ту же политику происхождения FF. Здесь я дам более подробный ответ:
Предупреждение: это требует повторной компиляции FF, и вновь скомпилированная версия Firefox не сможет снова включить SOP.
Проверьте исходный код Mozilla Firefox, найдите nsScriptSecurityManager.cpp в каталоге src. Я буду использовать перечисленный здесь в качестве примера: http://mxr.mozilla.org/aviarybranch/source/caps/src/nsScriptSecurityManager.cpp
Перейдите к реализации функции nsScriptSecurityManager::CheckSameOriginURI, которая является строкой 568 на дату 03.02.2016.
Сделайте, чтобы эта функция всегда возвращала NS_OK.
Это отключит SOP навсегда.
Ответ аддона браузера от @Giacomo должен быть полезен для большинства людей, и я принял этот ответ, однако, для моих личных потребностей в исследованиях (TL; не буду здесь объяснять) этого недостаточно, и я полагаю, что другим исследователям, возможно, потребуется сделать то, что Я сделал здесь, чтобы полностью убить СОП.
Я написал дополнение для преодоления этой проблемы в Firefox (Chrome, версия Opera появится в ближайшее время). Он работает с последней версией Firefox, с красивым пользовательским интерфейсом и поддержкой регулярных выражений JS: https://addons.mozilla.org/en-US/firefox/addon/cross-domain-cors
В CORS-везде аддон работает для меня до Firefox 68, после 68 Мне нужно настроить "privacy.file_unique_origin" -> False (по открытому "о: конфигурациях") для решения " CORS запроса не HTTP" для нового CORS правил общего происхождения введен.
По состоянию на сентябрь 2016 года это дополнение лучше всего отключить CORS: https://github.com/fredericlb/Force-CORS/releases
На панели параметров вы можете указать, какой заголовок будет добавлен и какой сайт будет включен автоматически.
Для меня сработало, установив для content.cors.disable значение false
В about:config
добавлять content.cors.disable
(пустой строкой).