Firefox без той же политики происхождения

3322
Knuwgljung

У меня все более неприятная проблема с реализацией Firefox той же политики происхождения.

Я занимаюсь разработкой интегрированной системы с поддержкой сенсорного экрана, и у нас есть возможность загрузки веб-страниц в фреймах в нескольких местах на экране. Веб-страницы могут быть веб-страницами любого типа из любого домена и местоположения (страницы Google, Yahoo, интранет и т. Д.), И в этом заключается моя проблема.

Мне нужно иметь возможность добавить событие onclick в iframe, которое дает мне идентификатор iframe (или некоторый другой уникальный идентификатор) в качестве ответа. Это говорит мне о том, что в iframe выполняется действие (просмотр веб-страниц) и что iframe не следует перезагружать (страницы настроены на фиксированный интервал автоматического обновления, который должен прерываться при выполнении действия.

Я прочитал почти все, что Google возвращает мне (но я бы хотел, чтобы меня опровергли в этом вопросе), и я нашел, что это лучшее (среди многих других) решение:

<iframe src='http://google.com' id='iframe1' onload='netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite"); this.contentWindow.document.addEventListener("click", function(event), false)'></iframe> 

Это просто дает мне обычное разрешение, в котором http: // localhost отказано в получении свойства Window.document от http://google.com.

Я знаю, почему я получаю это сообщение об ошибке, и мой вопрос прост. Как мне это убрать?

Это интегрированная система, я могу скомпилировать Firefox из исходного кода, я могу отредактировать исходный код, если необходимо, я могу изменить prefs.js и т. Д., Но мне нужно использовать Firefox (я знаю, что все другие разумные веб-браузеры имеют хороший переключатель командной строки чтобы отключить его ...) но у нас есть (довольно) тесная интеграция с платформой Firefox, которую было бы трудно удалить.

В настоящее время мы используем Firefox v.3.5.16 (я знаю, что это EOL, мы собираемся обновить его в другой раз) на платформе Debian Squeeze. При необходимости я могу перейти на более новую версию Firefox, но из того, что я нашел, кажется, что в этом вопросе дела идут еще хуже.

TL; DR Помогите мне закрыть ту же самую политику происхождения, любым возможным способом на Firefox 3.5.16 для интегрированной платформы, которая должна изменить код через междоменные фреймы.

4
Да, и просто, чтобы уточнить это ** только ** нужно работать в Firefox. На данном этапе достаточно любого решения! Knuwgljung 11 лет назад 0
[Могу ли я отключить SOP (та же политика происхождения) в любом браузере для разработки?] (Http://stackoverflow.com/questions/330427/can-i-disable-sop-same-origin-policy-on-any-browser- for-development) и, скорее всего, [функция отправки XMLHttpRequest выдает исключение 0x80004005 при вызове из локального html-файла, начиная с Gecko 5, даже с запрошенным UniversalBrowserRead] (https://bugzilla.mozilla.org/show_bug.cgi?id=667312) Bobby 11 лет назад 0
В приведенном мной примере кода первая ссылка (и я пробовал надстройку CORS) используется бесполезно, она все еще не работает! Другая ссылка для Firefox 5, где enablePrivilege удален! Knuwgljung 11 лет назад 0

1 ответ на вопрос

2
Knuwgljung

Я чувствую себя довольно глупо.

Это работает, когда вы используете UniversalXPConnect вместо UniversalBrowserWrite.

Например: netscape.security.PrivilegeManager.enablePrivilege ("UniversalXPConnect");

Кроме того, вы не можете использовать this.id или this.parentNode.id, которые все еще дают (другую) ошибку доступа. Чтобы победить эту проблему, сначала сохраните ее во временной переменной:

onload='var tempstuff = this.id; this.contentWindow.document.addEventListener("click", function(event), false)' 
Это отвечает на мой собственный вопрос, дальнейшие ответы не нужны! Если бы кто-нибудь мог пометить этот вопрос как ответ, я был бы признателен (я не могу пометить свой собственный ответ в течение двух дней). Knuwgljung 11 лет назад 0
Тогда вам придется подождать, я тоже не могу это пометить;) Huygens 11 лет назад 0
Это все еще работает? Я думаю, нет. erm3nda 9 лет назад 0
Если я правильно помню, мы все еще используем этот метод с Firefox 33, поэтому он все равно должен работать правильно. Knuwgljung 9 лет назад 0