All-For-Kompa.RU

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

Всё для компа

chat

Видео дня

Популярное

Реклама

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

Партнёры



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

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

Авторизация


Реклама

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

Опрос

Какую поисковую систему используете?

1. Яndex
2. Google
3. Rambler
4. Nigma
5. Другое
6. Mail
7. Yahoo!

Реклама

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

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

Комментарии

Счетчики

На сайте: 1
Прохожие: 1
Пользователей: 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 ...[ Скачали 67375 раз ]
Амфибии, Гайд по ассасина...[ Скачали 31758 раз ]
Амфибии, Гайд по шаманам.[ Скачали 30663 раз ]
cs 1.6 patch v48 full[ Скачали 29046 раз ]
Русский бот PW Alfa v 2.6[ Скачали 17192 раз ]
Огромный пак глюков и баг...[ Скачали 12745 раз ]
civilization 5 скачать бе...[ Скачали 11941 раз ]
PW MP5[ Скачали 11149 раз ]
MHS-Bot-PW 2.3 ботовод[ Скачали 10405 раз ]
Niko Bellic (нико белич) ...[ Скачали 10006 раз ]
Wallpapers Girls №1044[ Добавлен 14.04.2024 ]
Shadow Corridor 2 (2024/E...[ Добавлен 14.04.2024 ]
Inkbound (2024/En/MULTI/R...[ Добавлен 13.04.2024 ]
The Planet Crafter (2024/...[ Добавлен 13.04.2024 ]
My Life: Farm Vet (2024/R...[ Добавлен 12.04.2024 ]
Headquarters: World War I...[ Добавлен 12.04.2024 ]
Ereban: Shadow Legacy (20...[ Добавлен 11.04.2024 ]
Broken Roads (2024/Ru/En/...[ Добавлен 11.04.2024 ]
Wallpapers Girls №1042[ Добавлен 11.04.2024 ]
Children of the Sun (2024...[ Добавлен 09.04.2024 ]