All-For-Kompa.RU

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

Всё для компа

chat

Видео дня

Популярное

Реклама

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

Партнёры



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

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

Авторизация


Реклама

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

Опрос

Откуда удобнее качать?

1. depositfiles.com
2. letitbit.net
3. другой
4. Rapidshare.de
5. ifolder.ru
6. uploading.com
7. filespace.ru
8. Oxyshare.com
9. upload2.ne
10. quickdump.com
11. Megaupload.com
12. Hyperupload.com
13. Turboupload.com
14. Mytempdir.com
15. getfile.biz

Реклама

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

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

Комментарии

Счетчики

На сайте: 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 ...[ Скачали 67387 раз ]
Амфибии, Гайд по ассасина...[ Скачали 31766 раз ]
Амфибии, Гайд по шаманам.[ Скачали 30675 раз ]
cs 1.6 patch v48 full[ Скачали 29056 раз ]
Русский бот PW Alfa v 2.6[ Скачали 17201 раз ]
Огромный пак глюков и баг...[ Скачали 12756 раз ]
civilization 5 скачать бе...[ Скачали 11948 раз ]
PW MP5[ Скачали 11162 раз ]
MHS-Bot-PW 2.3 ботовод[ Скачали 10413 раз ]
Niko Bellic (нико белич) ...[ Скачали 10015 раз ]
Wallpapers Girls №1051[ Добавлен 26.04.2024 ]
Wallpapers Mix №1138[ Добавлен 25.04.2024 ]
Jawbreaker (2024/Ru/En/Mu...[ Добавлен 25.04.2024 ]
Wallpapers Girls №1050[ Добавлен 25.04.2024 ]
Eclipse: Echo of Dimensio...[ Добавлен 25.04.2024 ]
Phantom Fury (2024/Ru/En/...[ Добавлен 25.04.2024 ]
Sweet Transit (2024/Ru/En...[ Добавлен 24.04.2024 ]
Teenage Mutant Ninja Turt...[ Добавлен 24.04.2024 ]
Wallpapers Mix №1137[ Добавлен 24.04.2024 ]
Wallpapers Girls №1049[ Добавлен 22.04.2024 ]