Toderelt.ru

ПК Журнал ТодерельТ
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Усунення помилки opera: crossnetworkwarning в браузері Опера

Усунення помилки opera: crossnetworkwarning в браузері Опера

Помилка в браузері Opera

Незважаючи на відносну стабільність роботи, в порівнянні з іншими браузерами, при використанні програми Опера теж з'являються помилки. Однією з найпоширеніших проблем є помилка opera: crossnetworkwarning. Давайте з'ясуємо її причину, і постараємося знайти способи усунення.

Причины ошибки

Сразу давайте установим, что служит причиной для возникновения этой ошибки.

Ошибка opera:crossnetworkwarning сопровождается надписью «Страница, размещенная в интернете, запрашивает данные из вашей локальной сети. По соображениям безопасности автоматический доступ будет запрещен, но вы можете его разрешить». Конечно, непосвященному пользователю довольно трудно разобраться, что это означает. К тому же, ошибка может носить очень разный характер: появляться на конкретных ресурсах или независимо от того, какой сайт вы посетили; всплывать периодически, или носить постоянный характер. Поводом для такого расхождения является то, что причиной этой ошибки могут выступать совершенно разные факторы.

Основной причиной ошибки opera:crossnetworkwarning являются неправильные настройки сети. Они могут быть как на стороне сайта, так и на стороне браузера или провайдера. Например, ошибка может возникнуть при неправильных настройках безопасности, если сайт использует https-протокол.

Кроме того, данная проблема возникает, если дополнения, установленные в Opera, конфликтуют между собой, с браузером или с конкретным сайтом.

Бывают случаи, когда при отсутствии оплаты провайдеру за его услуги со стороны клиента, оператор сети, с помощью изменений настроек, может отключить пользователя от интернета. Конечно, это нетипичный случай отключения, но и такое встречается тоже, поэтому при выявлении причин возникновения ошибки не стоит исключать и его.

Кроссбраузерный запуск «злобного» кода на клиенте

Пост будет интересен веб-разработчикам, заинтересованным в запуске небезопасного кода на клиенте (из браузера). Под «злобным» мы понимаем код, который мы не можем выполнить в чистом JavaScript’е (в нашем случае — подписание куска данных определенным сертификатом).

Моя команда занимается разработкой интернет-сервиса для расчета зарплаты. Перед нами встала задача подписать отправляемую отчетность закрытым ключом клиента, следовательно, нужно выполнить на машине клиента опасный с точки зрения браузера код. При этом очень хотелось не ограничивать клиента в выборе браузера для пользования нашим сервисом.

Вот как мы решали эту не самую тривиальную задачу.

Итак, нам необходимо запустить на машине клиента достаточно небезопасный код. Конечно, просто так никто нам это сделать не даст, но нас не покидала надежда, что с достаточным количеством вопросов «Вы уверены?» и «Вы доверяете этому сайту?» наша задумка таки пройдет.

На входе у нас была работающая ActiveX-библиотека, которая делала всё, что нам нужно, но только в IE. Нам же нужно было кросс-браузерное решение.

Сразу оговоримся о нашем понимании термина «кросс-браузерное». Согласно статистике, наши пользователи используют следующие браузеры:

IE 8+ (39%)
Mozilla Firefox 3.6+ (19%)
Opera 9+ (17%)
Chrome (14%)
IE 7 (6%)
IE 6 (4%)
Safari 5+ (1%)

Читать еще:  Элементы Яндекса для Mozilla - описание, скачать

Соответственно, нам требовалась корректная работа во всех этих браузерах.

Решение пришло довольно быстро. Идея заключается в следующем: пользователь на машину устанавливает небольшую программку, которая могла бы выполнять нужные нам действия. Взаимодействие же с ней можно осуществлять при помощи HTTP-запросов. Программка получилась действительно небольшой, она умела принимать входящие запросы специального вида и запускать соответствующие методы CryptoApi.

Оставалась понять, как же сделать нужный запрос на такой сервер. Сделать такой запрос с сервера не представлялось возможным — машина пользователя может не иметь внешнего ip-адреса по десятку разных причин. Значит, запрос надо выполнять из javascript-кода на адрес 127.0.0.1. С одной стороны, это существенно облегчало задачу идентификации выполняющего запрос и позволило обойтись без HTTPS, с другой — это означало, что нам придется делать кросс-доменный вызов, что само по себе сопряжено с рядом проблем. Тонкости кросс-доменных вызовов уже обсуждались на Хабре, например, в этой статье. Вооруженные таким образом богатым инструментарием, мы приступили к экспериментам.

В качестве первого подхода мы решили воспользоваться самым простым из имеющихся методов — Cross-Origin Resource Sharing. Эта технология поддерживается многими современными браузерами и проста в реализации. Но, к сожалению, она не поддерживается Оперой, а ее реализация в IE не дает возможности делать локальные вызовы с сайтов в категориях Internet и Intranet. И если с последним мы еще могли смириться (у нас в запасе был наш ActiveX-компонент), то поддержкой Оперы мы жертвовать не стали. От идеи написать расширение для Оперы, которое проксировало бы локальные вызовы с нужных адресов, нас отговорили интерфейсологи — да мы и сами не были уверены в том, что все пользователи разберутся с установкой расширения. Кроме того, его тоже пришлось бы своевременно обновлять… Пришлось искать другие решения.

Flash

Следующей нашей идеей было использовать для кросс-доменных запросов библиотеку flXHR. Но на этом пути нас снова подстерегали политики безопасности, на этот раз самого flash. Не успели мы переписать наш сервис на использование только GET-запросов (чтобы обойти запрет на POST запросы с https на http), как выяснилось, что flash-приложения, полученные из областей Internet и Intranet, помещаются в песочницу, изолированную от машины пользователя, в том числе и по http-запросам. Снова мимо.

JSONP

Тут же нас осенила новая идея. Возможность обойтись только GET-запросами означала, что мы можем, слегка подкорректировав формат запросов, воспользоваться технологией JSONP. Правим, запускаем — работает. Но это только в Хроме. Firefox — аналогично. А вот в Опере и в IE нас вновь поджидали проблемы. Выяснилось, что политики безопасности этих браузеров запрещают подключение скриптов, находящихся в более приватной зоне адресов. Агррррх!

Iframe

Следующий эксперимент — открыть iframe на 127.0.0.1 и как-то с ним общаться. И опять нас подвела безопасность Оперы. Эти свойства политик безопасности Оперы грозили поставить крест на нашей идее. Выяснилось, что при кросс-доменном обращении к машине пользователя, включая подключение скриптов, redirect и открытие в iframe, Опера подкладывает вместо ответа служебную страницу opera:crossnetworkwarning, в которой пользователь может подтвердить свое желание осуществить переход на локальную машину (естественно, при загрузке скрипта с локальной машины, пользователь этой страницы не увидит и подтвердить ничего не сможет). Единственное исключение — это когда переход в явном виде осуществлен пользователем (например, при клике на ссылку <a href=»http://localhost/» target=»my_frame»>).

Читать еще:  Как в скайпе добавить новый контакт за минуту?

Iframe + PostMessage

Получается, что каким-никаким образом, но iframe с локальным адресом открыть можно. Но тогда можно и общаться с локальным сервером посредством postMessage! Осталось только выбрать, как открывать локальный фрейм. Возможностей, собственно, две: либо показывать пользователю ссылку, которая будет выполнять в скрытом фрейме переход на локальный адрес, либо выполнять переход самим и предоставить пользователю самостоятельно разрешить переход. Поколебавшись, мы выбрали второй путь. Преимущество его в том, что на странице opera:crossnetworkwarning (как видно на скриншоте) есть возможность запомнить разрешение для конкретного домена, в результате лишнее действие потребуется от пользователя всего один раз. Кроме того, этот способ позволяет повторять попытку обращения к сервису без участия пользователя, в том случае, когда он не установлен или не запущен, и запустить требуемый метод, как только сервис станет доступен.

postMessage не работает в IE 6-7 и в Firefox 3, но мы решили не добавлять на этот случай костылей a-la hash-polling. Для пользователей IE мы оставили ActiveX-компонент, а пользователям Firefox 3 (которых у нас считанные единицы) мы решили предложить обновиться до более поздних версий.

Ну и чуть-чуть пиара (проект хороший, поэтому надеюсь на понимание). Если ваша жена или мама — бухгалтер и входят в сотню тысяч несчастных женщин, рассчитывающих зарплату в программе-монстре, — порекомендуйте им посмотреть Эврику (так называется наш сервис). Хватит уже мучиться от всякой непотребщины.

Как исправить ошибку «opera:crossnetworkwarning»

В первую очередь лучше выяснить, на чьей она стороне. Для этого свяжитесь со своим провайдером и опишите ситуацию. Если вы не уплатили за тариф и/или идут какие-то работы на стороне провайдера, то вам сообщат об этом и скажут, когда ошибка будет устранена. Если же ошибка на стороне сайта, то здесь вы ничего сделать уже не сможете. Придётся ждать, пока на той стороне устранят поломку.

При этом вы можете проверить наличие проблемы на своей стороне и решить её при обнаружении. Далее рассмотрим самые популярные варианты.

Вариант 1: Конфликт расширений

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

Читать еще:  Как использовать Гугл (Google) поиск по картинке в интернете

Если это ваш случай, то исправляется проблема очень просто – конфликтующие расширения удаляются. Обычно «проблемным» расширением служит то, послу установки которого вы обнаружили проблемы в работе браузера. Удаление дополнений в Opera происходит по следующей инструкции:

  1. Запустите браузер и откройте его главное меню. Для этого нажмите по иконке логотипа Opera левой кнопкой мыши.
  2. Из контекстного меню выберите пункт «Расширения» и снова «Расширения».
  3. Откроется панель расширений. Для начала попробуйте отключить «проблемное» расширение. Просто переведите переключатель в неактивное положение. После этого перезапустите браузер и проверьте, не исчезла ли проблема.
  4. Если проблема не исчезла, то включите это расширение и отключите другое. Таким образом, методом исключений, вы найдёте «проблемное» место. Если же дефективное дополнение не было обнаружено таким образом – значит проблема не с расширениями.
  5. При обнаружении «проблемного» дополнения выполните его удаление из браузера – нажмите на крестик, расположенный в правой верхней части блока с описанием дополнения.

Вариант 2: Неправильные настройки Opera

Возможно, что где-то в настройках веб-обозревателя было допущено упущение, из-за которого и появилась данная ошибка. Проверьте настройки и исправьте проблемы с помощью данной инструкции:

  1. Откройте главное меню веб-обозревателя по инструкции, которая была дана выше. Там выберите пункт «Настройки». Их же можно открыть сочетанием клавиш Alt+P.
  2. В левой части открывшейся страницы раскройте вкладку «Дополнительно», а затем переключитесь на «Браузер».
  3. Пролистайте страницу до самого конца. В блоке «Сбросить настройки» воспользуйтесь кнопкой «Восстановление настроек по умолчанию».
  4. Дайте своё согласие на сброс настроек в Opera.

Таким образом настройки браузера будут восстановлена до рекомендованных, а пользовательские изменения откатятся назад. Ваши данные и закладки не пострадают, но некоторые расширения могут быть после этого отключены.

Вариант 3: Включить VPN

В некоторых случаях ситуацию можно исправить, включив VPN в браузере. Это не устранит причину проблемы, но позволит избавиться от ошибки. Включение VPN-дополнения в веб-обозревателе Opera происходит очень просто:

  1. В адресной строке найдие значок VPN. Новые версии веб-обозревателя располагают этим значком по умолчанию.
  2. Переведите переключатель в активное положение. Ниже вы также можете выбрать часть света для использования IP-адреса, если выбранная браузером по умолчанию вам не подошла.

Всплывающие сообщения об ошибке не всегда препятствуют просмотру контента на сайтах. Иногда их можно просто пропустить и продолжить просмотр контента.

Как видите, справиться с ошибкой «opera:crossnetworkwarning» в веб-обозревателе Opera вполне реально. Однако, если проблема не на вашей стороне – вам останется только ждать, пока её устранят на другой стороне.

голоса
Рейтинг статьи
Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector