Opera не загружает некоторые файлы JavaScript - PullRequest
10 голосов
/ 29 марта 2011

У меня есть веб-страница, которая загружается в IFRAME, которая правильно работает в IE и Firefox, но не в Opera.Что я ненавижу, потому что я был пользователем Opera в течение многих лет.И я написал эту вещь.: -)

Проблема в том, что Opera не загружает некоторые файлы JavaScript, которые составляют страницу.Я подозреваю, что это связано с тем, что сама страница загружается через HTTPS, а включенные файлы - через HTTP с другого хоста и порта.Я верю, что Opera это позволяет, но на вкладке Dragonfly Net даже не отображается попытка их загрузки.

Страница представляет собой Rally «пользовательское приложение», и я не могу контролироватьтот факт, что он загружается в IFRAME или загружается через HTTPS.Я также не могу контролировать тот факт, что включенные файлы загружаются с другого хоста или что хост поддерживает только HTTP.Так что я как бы застрял со смешанным контентом.

Среди прочего, элемент HEAD страницы содержит (немного санированный):

<script src="http://www.example.com:81/common/jquery-1.4.2.js"></script>
<script src="http://www.example.com:81/common/jsTree/jquery.jstree.js"></script>
<script src="http://www.example.com:81/common/utils_jserror.js"></script>
<script src="http://www.example.com:81/common/utils_logging.js"></script>
<script src="http://www.example.com:81/common/utils_print_r.js"></script>
<script src="http://www.example.com:81/common/utils_rally_query.js"></script>
<script src="http://www.example.com:81/common/json2.js"></script>
<script src="/slm/js/slm.js"></script>
<script src="/slm/js-lib/dojo/rally-1.3.1/dojo/dojo.js.uncompressed.js"></script>
<script src="/slm/mashup/1.18/js/batch-toolkit.js"></script>
<script src="/slm/mashup/1.18/js/utilities.js"></script>

ALL of "/ slm / ... "материал загружается, а НЕТ из материала" www.example ... ".

Кто-нибудь понял, что я делаю неправильно?

1 Ответ

14 голосов
/ 16 сентября 2011

Opera имеет функцию, называемую межсетевой защитой. В основном это накладывает некоторые дополнительные ограничения на то, что страницы из Интернета могут делать с вещами в вашей локальной сети.

Причиной существования этой функции является появление так называемых «фиш-ферм», где было обнаружено, что экраны конфигурации на основе HTTP некоторых популярных домашних маршрутизаторов / модемов были настолько плохо защищены, что вредоносные веб-страницы могли переписывать настройки вашего роутера - например, чтобы настроить его на использование прокси и передавать весь трафик через вредоносный сервер. Чтобы противостоять этому, Opera знает, что некоторые IP-адреса не используются в общедоступной сети (например, 127.0.0.1 или 192.168. *), И не позволяет страницам с «общедоступного» сайта загружать файлы или отправлять запросы на « местный "сайт.

Вы можете перенастроить это для каждого сайта. Возможно, проще всего добавить IFRAME на «публичный» сайт, загружая один из ресурсов с локального сервера. IFRAME покажет страницу с предупреждением о «междоменном запросе» с некоторыми дополнительными ссылками. Нажмите на ссылку, чтобы всегда разрешать локальные запросы с этого сервера, и вуаля - теперь ваше кросс-сетевое приложение должно снова работать.

(Добавление IFRAME так же просто, как просмотр источника, добавление <iframe src="http://local/whatever/included/file.js"></iframe>, сохранение и «Инструменты> Дополнительно> Обновить из кэша»)

...