All-For-Kompa.RU

Сегодня:
Карта сайта форум Главная
Скрыть рекламный блок

Всё для компа

chat

Видео дня

Популярное

Реклама

Хочешь помочь проекту? Установи наш баннер!

Партнёры



Развлекательный портал по игре Dota 2. У нас вы первым узнаете о последних игровых новостях, сможете почитать интересные статьи и гайды, посмотреть стримы популярных комментаторов и многое другое.

Про-софт - сайт професионального софта. Ето сайт не только софта но также игровых дополнений, музыки, фильмов, игр для ПК а также читов для ПК игр. Постоянное обновление материалов и каждый день появляется чтото новенькое!

Авторизация

Реклама

Хочешь помочь проекту? Установи наш баннер!

Опрос

Если не спиться

1. лечь спать а не сидеть за компом до 6 утра
2. утопиться
3. обкуриться
4. воды напиться
5. задолбиться
6. обмочиться
7. выпрямиться

Реклама

Хочешь помочь проекту? Установи наш баннер!

Популярные тэги

Комментарии

Счетчики

На сайте: 6
Прохожие: 6
Пользователей: 0
Статус:

Счётчик тИЦ и PR Rambler's Top100
АвторАвтор: leonP4 | ДатаДата: 17.02.2011 |Голосов: 0


Собственно, проблема.

Флэш-ролик не может обратиться к ресурсам на сервере, если размещен на
сайте с международным именем (в частности, РФ). Замечено в браузере
Firefox под Windows.

Не очень приятный глюк, особенно с учетом распространенности данного
браузера и данной платформы… Беглый взгляд по форумам не принес желаемых
результатов, и пришлось взяться за исследования. Итак, подробности…



Тесты



Для начала — тестовая флэшка. Кода из нескольких строчек достаточно для нашего исследования:


Code
var xml = new XML;
xml.onLoad = function() {
  _root.txt.text = this.toString();
};
xml.load(typeof(_root.link) === "undefined" ? "test.xml" : _root.link);

Ну и, естественно, нужно не забыть текстовое поле с именем txt на первом кадре. Алгоритм простой: загружаем файл «test.xml» и отображаем его содержимое. Если указан параметр «link», то XML загружается из указанного адреса. Соответствующий «test.xml» сделаем самым простым:

Code
<?xml version="1.0" encoding="UTF-8"?>
<test>Test</test>

Файлы «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.

С доменом RU все хорошо:

А вот с доменом РФ что-то не так:

Собственно, видна проблема: 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» такого вида не приносили результатов:

Code
<?xml version="1.0" encoding="UTF-8"?>
<cross-domain-policy>
<allow-access-from domain="сайтнн.рф"/>
<allow-access-from domain="*.сайтнн.рф"/>
<allow-access-from domain="xn--80asmaqi.xn--p1ai"/>
<allow-access-from domain="*.xn--80asmaqi.xn--p1ai"/>
<allow-access-from domain="%D1%81%D0%B0%D0%B9%D1%82%D0%BD%D0%BD.%D1%80%D1%84"/>
<allow-access-from domain="*.%D1%81%D0%B0%D0%B9%D1%82%D0%BD%D0%BD.%D1%80%D1%84"/>
<allow-access-from domain="%d1%81%d0%b0%d0%b9%d1%82%d0%bd%d0%bd.%d1%80%d1%84"/>
<allow-access-from domain="*.%d1%81%d0%b0%d0%b9%d1%82%d0%bd%d0%bd.%d1%80%d1%84"/>
</cross-domain-policy>

Выглядело это так:

То есть, «crossdomain.xml» загружается, но флэш-плеер решает, что XML-данные с этого сайта загружать нельзя.

Решение

Остался последний вариант — указать в качестве домена "*". Таким образом, «crossdomain.xml» приобрел следующий вид:

Code
<?xml version="1.0" encoding="UTF-8"?>
<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>

И — о чудо!

Мораль

Решение проблемы существует. Без издевательства. Решение, конечно, не идеальное, потому что доступ к данным через «crossdomain.xml» открывается сразу для всех сайтов. Впрочем, это не всегда проблема, потому что кому надо — те смогут обратиться к данным и другим способом, не обращая внимания на «crossdomain.xml».

Относительно того, указывать ли имя хоста в параметрах (flashvars), или же его нужно включить в исходник флэш-ролика, вопрос остается открытым. Наверняка многие разработчики в целях защиты предпочитают «хардкодить» имена сайтов во флэшки, и наверняка многие предпочитают выносить эти адреса в параметры. Вполне допускаю правоту и тех, и других, в зависимости от проекта и задач. И предпочитаю на эту тему не спорить.

Материалы:

* Flash
* ActionScript
* XML
* HTML+SWFObject


Теги к статье:

| : crossdomain, Flash
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Популярные файлыНовые файлы
Call of Duty 5: World at ...[ Скачали 67848 раз ]
Амфибии, Гайд по ассасина...[ Скачали 32220 раз ]
Амфибии, Гайд по шаманам.[ Скачали 31054 раз ]
cs 1.6 patch v48 full[ Скачали 29535 раз ]
Русский бот PW Alfa v 2.6[ Скачали 17719 раз ]
Огромный пак глюков и баг...[ Скачали 13184 раз ]
civilization 5 скачать бе...[ Скачали 12263 раз ]
PW MP5[ Скачали 11569 раз ]
MHS-Bot-PW 2.3 ботовод[ Скачали 10967 раз ]
Niko Bellic (нико белич) ...[ Скачали 10322 раз ]
Wallpapers Mix №1956[ Добавлен 17.07.2025 ]
Wallpapers Mix №1955[ Добавлен 16.07.2025 ]
Wallpapers Mix №1954[ Добавлен 15.07.2025 ]
Wallpapers Girls №1196[ Добавлен 12.07.2025 ]
Wallpapers Mix №1953[ Добавлен 09.07.2025 ]
Wallpapers Mix №1952[ Добавлен 08.07.2025 ]
Wallpapers Mix №1951[ Добавлен 05.07.2025 ]
Wallpapers Girls №1195[ Добавлен 04.07.2025 ]
Wallpapers Mix №1950[ Добавлен 03.07.2025 ]
Wallpapers Mix №1949[ Добавлен 29.06.2025 ]