Какую поисковую систему используете?
Сис администрирование [1] | Сети и коммуникации [7] |
Программирование [4] | Защита от взлома [5] |
Полезные советы [7] | Вирусы и спам [1] |
Безопасность [5] | Сделай сам [5] |
Гаджеты [1] | Железо [8] |
Прочее [6] | Взлом [8] |
Ну и, естественно, нужно не забыть текстовое поле с именем txt на первом кадре. Алгоритм простой: загружаем файл «test.xml» и отображаем его содержимое. Если указан параметр «link», то XML загружается из указанного адреса. Соответствующий «test.xml» сделаем самым простым:
Файлы «test.swf» и «test.xml» выкладываем на сервер и начинаем тесты. Для тестов использовались два домена, один RU и один РФ, являющиеся синонимами. Ожидаемый результат — флэшка должна отображать содержимое XML-файла на любом домене. С тестом справились:
* Opera 11 (Windows, Linux)
* Google Chrome 9 (Windows, Linux)
* Internet Explorer 8
* Internet Explorer 6 (адрес punycode)
Из распространенных браузеров тест провалился только в Firefox (Windows, Linux). Браузеры Lynx и W3M не участвовали, по понятным причинам.
Исследование
Что же не так? Попробуем протестировать загрузку ресурсов с сервера через Firebug.
А вот с доменом РФ что-то не так:
Собственно, видна проблема: Flash-плагин в сочетании с Firefox делают запрос на адрес, не закодировав доменное имя в punycode, что и вызывает проблему.
Окей, попробуем по-другому. Сделаем так, чтобы данные загружались с домена RU. Добавим в адрес параметр «link», который мы предусмотрели специально для этого случая.
Понятно, что у нас ничего не получится из-за проблем с кроссдоменными запросами. Но раз уж решили действовать последовательно — будем последовательными
Вооружившись документацией, создадим файл «crossdomain.xml» в корне сайта. Этот файл будет запрошен с домена RU (с того домена, где размещен XML-файл), и в нем должно быть указано какие флэш-ролики могут загружать загружать данные (точнее, на каких доменах опубликованы эти ролики).
Вот только вопрос: какому домену разрешить запросы к нашему XML-файлу? Ведь, как мы увидели, с кириллическим именем домена есть определенные проблемы…
Мы последовательно протестировали все возможные имена домена РФ:
* Кириллица (.рф)
* Punycode (.xn--p1ai)
* URL-кодирование, нижний регистр (.%d1%80%d1%84)
* URL-кодирование, верхний регистр (.%D1%80%D1%84)
И… Все безуспешно. Все вариации на тему «crossdomain.xml» такого вида не приносили результатов:
То есть, «crossdomain.xml» загружается, но флэш-плеер решает, что XML-данные с этого сайта загружать нельзя.
Решение
Остался последний вариант — указать в качестве домена "*". Таким образом, «crossdomain.xml» приобрел следующий вид:
И — о чудо!
Мораль
Решение проблемы существует. Без издевательства. Решение, конечно, не идеальное, потому что доступ к данным через «crossdomain.xml» открывается сразу для всех сайтов. Впрочем, это не всегда проблема, потому что кому надо — те смогут обратиться к данным и другим способом, не обращая внимания на «crossdomain.xml».
Относительно того, указывать ли имя хоста в параметрах (flashvars), или же его нужно включить в исходник флэш-ролика, вопрос остается открытым. Наверняка многие разработчики в целях защиты предпочитают «хардкодить» имена сайтов во флэшки, и наверняка многие предпочитают выносить эти адреса в параметры. Вполне допускаю правоту и тех, и других, в зависимости от проекта и задач. И предпочитаю на эту тему не спорить.
Материалы:
* Flash
* ActionScript
* XML
* HTML+SWFObject
Всего комментариев: 0 | |
Популярные файлы | Новые файлы | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|