Просмотр полной версии : Снова тема с кроссдоменником в опере. Как же их подружить?
Знаю, что такие темы уже были, и все-таки хочется расставить все точки на ё, ибо от этой оперы у меня скоро мозг взорвется.
Грузит мой прелодер приложение в контакт, во всех браузерах (даже в ИЭ!) все работает отлично, кроссдоменник загружается, разрешения даются, приложение начинает работать. Запускаю в опере, и пошло поехало.
Констекст загрузки указывал. Даже пытался сделать обходным путем, сначала грузил байты приложения через URLLoader, потом передавал полученный байт массив в метод Loader#loadBytes. Опять же, этот способ отлично работает во всех браузерах кроме оперы! Сначала (при использовании Loader'а) стандартным способом она выдавала ошибку #2000 Отсутствует активный контекст безопасности, а при использовании второго способа начала гнать на нарушение изолированной среды.
Вот мой кроссдоменник:
<?xml version="1.0"?>
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<allow-http-request-headers-from domain="*.vkontakte.ru" headers="*"/>
<allow-http-request-headers-from domain="vk.com" headers="*"/>
<allow-http-request-headers-from domain="*.vk.com" headers="*"/>
<allow-http-request-headers-from domain="vkontakte.ru" headers="*"/>
<allow-access-from domain="*.vkontakte.ru" to-ports="80" />
<allow-access-from domain="vk.com" to-ports="80" />
<allow-access-from domain="*.vk.com" to-ports="80" />
<allow-access-from domain="vkontakte.ru" to-ports="80" />
</cross-domain-policy>
Далее, добавил к загрузчику слушатель SecurityErrorEvent.SECURITY_ERROR, после чего она перестала все грузить молча. Но в окне удаленной сессии во флеш девелоп, появляется сообщение, не удалось загрузить файл crossdomain.xml Хотя он 100% лежит по тому адресу, что написан в ошибке, и 100% доступен.
Я конечно понимаю, что опера дерьмовый браузер в этом плане, но давай те все-таки решим эту проблему. Думаю далеко не одного меня это интересует.
п.с. Плеер с ютюба как-то грузит видео, и в опере никаких проблем. Стало быть решение есть
Ну а скажем если такой ему дать кросс:
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*" to-ports="*"/>
</cross-domain-policy>
Может Опера тупо не через 80-й порт работает вдруг как-то?
Не, такой я пробовал первым делом, безрезультатно.
Но вот в том контактовском кроссдоменники отдельно порты убирать не пробовал. Надо попробовать
Добавлено через 2 минуты
бесполезно
Ну а снифер что показывает? Куда там оно ломится и как?
мм.. как проверить?
Добавлено через 1 час 5 минут
По-моему эту проблему решить невозможно.
Скачал спецификацию кроссдоменников с сайта адоби, взял оттуда пример файла с наименьшими ограничениями (чтоб уж точно все было правильно)
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*" secure="false"/>
<allow-http-request-headers-from domain="*" headers="*" secure="false"/>
</cross-domain-policy>
И опять та же клизма.
Добавлено через 2 часа 33 минуты
Написал баг подробный баг репорт в оперу. Хз, исправят или нет
Ну это..... надо же посмотреть, что происходит при обменах флэшки с доменами.
Качаем и ставим httpWatcher и смотрим, что в протоколе творится.
Какие данные куда и как шлются. Когда видишь лог обмена, оно как-то нагляднее.
Мне вот просто лень тащить новый Вотчер и Оперу себе ставить.
Так бы уже глянул сам, ессно.
Кстати еще вариант - флэшку на штмл странице можно в разные контейнеры вставлять - SWFObject, нативный код, который генерится флэшИде при публикации и что-то там как-то еще.
Вот если попробовать еще и разные контейнеры?
Кстати флэшка в ВК - как приложение встроено в страницу - враппер, контейнер, еще что-то?
mikhailk
12.08.2011, 23:59
У меня в опере проблем с подгрузкой внешнего контента нет. Кроссдоменник самый простой:
<cross-domain-policy>
<allow-access-from domain="vk.com" to-ports="80"/>
<allow-access-from domain="*.vk.com" to-ports="80"/>
<allow-access-from domain="vkontakte.ru" to-ports="80"/>
<allow-access-from domain="*.vkontakte.ru" to-ports="80"/>
</cross-domain-policy>
Контекст при загрузке указываю так :
Security.allowDomain("*");
var context:LoaderContext = new LoaderContext();
context.securityDomain = SecurityDomain.currentDomain;
context.checkPolicyFile = true;
context.applicationDomain = ApplicationDomain.currentDomain;
Вопрос дурацкий, но тем не менее - в опере на другом компе та же ситуация?
Еще один дурацкий мысль:
если в Опере попробовать откатиться на предыдущие версии флэш-плэеров....
И если на какой-то версии заработает... то... ?
Вопрос дурацкий, но тем не менее - в опере на другом компе та же ситуация?
Да. Абсолютно на всех компах одинаково.
У меня в опере проблем с подгрузкой внешнего контента нет. Кроссдоменник самый простой:
У меня так же. Не пашет.
И если на какой-то версии заработает... то... ?
И это пробовал. Не пашет.
У меня уже возникла мысль, а может дело в апачи сервере? Все подгружается с денвера.
И если в сервере, то что это может быть? И почему в других бразуерах проблем нет
Кстати еще вариант - флэшку на штмл странице можно в разные контейнеры вставлять - SWFObject, нативный код, который генерится флэшИде при публикации и что-то там как-то еще.
Вот если попробовать еще и разные контейнеры?
Да мне надо чтобы работало с контактовской страницей. Остальное пока пофиг.
Кстати флэшка в ВК - как приложение встроено в страницу - враппер, контейнер, еще что-то?
Нет. Без использования обертки
mikhailk
13.08.2011, 12:48
У меня так же. Не пашет.
Так а вообще приложения в опере открываются?
Можете посмотреть моих шаманов (ВКонтакте->Шаманы). Там весь флэш-контент грузится во внешних библиотеках. Если отработает - значит дело не в связке опера-кроссдоменник.
У меня уже возникла мысль, а может дело в апачи сервере? Все подгружается с денвера.
Вот это не понятно. Денвер - среда разработки, это не полноценный сервер. Более того, сами разработчики Денвера не рекомендуют использовать его как полноценный сервер, открытый в Инет.
Надо бы поставить на типовой линуксовый сервер и проверить на нем.
Так а вообще приложения в опере открываются?
Да. Причем я проверял их кроссдоменники, копировал их, и все бестолку.
Вот это не понятно. Денвер - среда разработки, это не полноценный сервер.
Я и использую его для разработки. Я же не писал, что приложение уже запущено и функционирует.
Надо бы поставить на типовой линуксовый сервер и проверить на нем.
Это уже потом.
mikhailk
13.08.2011, 15:20
Я и использую его для разработки. Я же не писал, что приложение уже запущено и функционирует.
А в чем тогда смысл ловить баг, которого нет?
Если точнее, зачем ловить баг, который существует только внутри среды разработки?
В том, что я только предположил, что это из-за сервера, так как другие варианты у меня уже исчерпались. Но вообще, процентов на 80 уверен, что он тут ни при чем. Просто интересно, а может ли вообще это как-то зависеть от настроек сервера.
mikhailk
13.08.2011, 15:32
Понятно.
Два соображения.
1. Денвер подменяет файл hosts при старте. Если опера была запущена ранее, она может не подцепить модифицированный hosts
2. Кроссдоменник наверняка ищется по адресу http://localhost/crossdomain.xml - этот файл точно открывается в браузере, если задать его имя в адресной строке?
ЗЫ. А вообще-то тема ни разу не про кроссдоменник. Она про проблему Денвер-Опера.
1. Я это знаю. Такой вариант исключен.
2. Нет, она точно ищет его по правильному пути, о чем говорит аутпут во флеш девелоп. И файл точно доступен, как я уже написал в первом сообщении.
Денвер не ставит в путь localhost. Там пути получаются вполне нормальные. У меня, после запуска денвера, кроссдоменник доступен по адресу http://warfarex.com/crossdomain.xml
mikhailk
13.08.2011, 15:55
Чудес не бывает.
Если приложение сообщает, что оно не может его найти, значит с точки зрения оперы его нет.
Я бы положил копию кроссдоменника в корневой каталог сервера.
У меня, после запуска денвера, кроссдоменник доступен по адресу http://warfarex.com/crossdomain.xml
Именно Опера его открывает?
Именно Опера его открывает?
Да. Причем вообще без каких бы то ни было проблем.
Если приложение сообщает, что оно не может его найти, значит с точки зрения оперы его нет.
Оно сообщает как-то по левому. Сначала пишется предупреждение, что не удалось загрузить файл кроссдоменной политики, но потом сыпятся уже события ошибок, об отсутствии разрешений в файле политики. Хз как все это понимать.
Я бы положил копию кроссдоменника в корневой каталог сервера.
Так ведь это и получается корневой каталог
Сейчас буду ставить WAMP
mikhailk
13.08.2011, 16:11
Да. Причем вообще без каких бы то ни было проблем.
Еще остается кодировка.
Файл в UTF-8?
И, если первую строчку убрать (<?xml...), ничего не меняется?
Так ведь это и получается корневой каталог
Реальный корень у Денвера - 127.0.0.1
Я бы просто положил кроссдоменник сюда: http://127.0.0.1/crossdomain.xml
и посмотрел, что будет
Файл в UTF-8?
Да. Ну, по крайней мере я это указал, и сам файл создан во флешдевелоп.
И, если первую строчку убрать (<?xml...), ничего не меняется?
Неа. Все тоже самое.
Надеюсь сейчас wamp разъяснить ситуацию.
Добавлено через 21 минуту
Увы. Не сервер виноват. Даже антивирь отрубил из автозапуска для чистоты эксперимента, и перезагрузил комп. С Вэмпом то же самое.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.