Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Загрузка Xml с разных доменов (http://www.flasher.ru/forum/showthread.php?t=61950)

Lego 16.08.2004 12:54

Загрузка Xml с разных доменов
 
Есть мувик с XML объектом.
Flash лежит на

http://322222.dp.ua/topX/topX.swf

XML во flash грузится с этого же адреса

http://322222.dp.ua/topX/top10.xml

Проблема в следующем: юзер может попасть на сайт, если он в броузере наберет http://322222.dp.ua/ либо http://www. 322222.dp.ua/

Так вот, когда он набирает http://www. 322222.dp.ua/, xml перестает грузиться во flash.

Где-то читал, что xml должен находиться в томе же домене, что и flash-мувик. Но тогда не понятно, почему, когда я запускаю flash на своей машине, то он беспрепятственно лезет на указанный адрес в интернет и загружает этот xml.

Lego 16.08.2004 13:21

СТОП! Все не так :)

Мувик можно посмотреть по:

http://www.322222.dp.ua/show.php?txt=stat&m=1

Внутри флеша соответсвенно прописано
xml.load("http://www.322222.dp.ua/......")

Все работает.

Если сайт запустить со ссылки

http://322222.dp.ua/show.php?txt=stat&m=1

xml перестает грузиться.

Мне стоит писать на php скрипт, который будет определять url, набранный в броузере и передавать его во флэш? Или есть более грамотные пути решения этой проблемы.
Большое спасибо.

dimarik 16.08.2004 16:05

Цитата:

Внутри флеша соответсвенно прописано
xml.load("http://www.322222.dp.ua/......")
А если сделать xml.load("http://322222.dp.ua/......").

Lego 16.08.2004 16:12

Цитата:

А если сделать xml.load("http://322222.dp.ua/......").
, тогда люди, которые заходят на сайт при помощи www.322222.dp.ua, никогда не дождутся загрузки xml :D .

Вопрос вообще-то про универсальность загрузки: как сделать так, чтобы хмл загружался в любом из этих двух случаев.

dimarik 16.08.2004 16:17

выложи в руте сайта файл crossdomain.xml
такого содержания:

<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="322222.dp.ua" />
<allow-access-from domain="www.322222.dp.ua" />
</cross-domain-policy>

Подробности в хелпе флэша "About allowing cross-domain data loading"

Lego 16.08.2004 16:56

А это где именно. Что-то поискал по хелпу флэша - не нашел. У меня мх2004. Или мне надо хелп обновить?

dimarik 16.08.2004 17:31

У меня тоже MX2004

Help -> ActionScript Reference Guide -> Working with External Data -> Flash Player security features

Lego 16.08.2004 17:39

Большое спасибо. Кажется что-то нашел. Буду разбираться

dimarik 16.08.2004 17:48

GL & HF

Lego 16.08.2004 18:26

Что-то наверное не так делаю. На сайте
consult.ric.ua выложил хмл

<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="www.322222.dp.ua" />
<allow-access-from domain="322222.dp.ua" />
<allow-access-from domain="consult.ric.ua" />
</cross-domain-policy>

На сайте www.322222.dp.ua лежит флэш с
xml.load("http://consult.ric.ua/topX/top10.xml");

... не грузится :mad: :(

dimarik 17.08.2004 13:13

crossdomain.xml swf-кой подгружается? Можно посмотреть в log-окне Proxomitro'на, например

Lego 17.08.2004 13:42

Я конечно прошу прощение, но что есть Proxomitron?

И еще. В самой swf'ке нужно как-то указывать этот crossdomain.xml?

dimarik 17.08.2004 13:58

http://proxomitron.da.ru/ это мощный фильтр вэб-контента и http-заголовков. У него присутствует фича - просмотр HTTP-заголовков принимаемых и отправляемых, а также POST-данных. С помощью его лог-окна можно посмотреть весь "диалог" между браузером(swf-проигрывателем) и сервером.

crossdomen.xml не надо нигде прописывать. Флэшка (ActiveX или plugin браузера) сама его пытается найти в руте сервера, при условии, что сама флэшка была загружена с одного домена, а внутри нее есть вызовы на другие домены. В этом случае, прежде чем запросить и подгрузить в себя внешний (твой) xml, swf и т.д. сначала флэшка ищет и, если нахотит то подгружает и анализирует crossdomen.xml. А затем, если разрешено в crossdomen.xml, подгружает запрашиваемый контент.

Надеюсь я ясно высказываюсь.

Елё 17.08.2004 14:16

Зачем так сложно?
Сделай просто путь относительным, и грузи без проблем

Код:

xml.load("top10.xml");

dimarik 17.08.2004 14:45

kpyTa!

Lego 17.08.2004 14:48

2 Еле: Ты так говоришь, потому что пробовал или потому что тебе кажется? :) У меня ничего не получилось. К тому же все равно остается вопрос о загрузке хмл с другого домена (для меня остается :) )

Елё 17.08.2004 22:19

пробовал конечно
не однократно

я вообще например не знаю на каких сайтах мои ролики работают... каждый может скачать и у себя на сайте выложить. так что в моем случае вообще прямые пути не катят

Теряюсь в загадках почему это может не работать
скорее всего путь относительный неправильный

посмотри чему равно _root._url
это должна быть таже директория как и top10.xml

Lego 18.08.2004 11:45

Да с _root._url вроде как все ок - показывает тот адрес, на котором лежит swf. Может я коряво объяснил? :rolleyes:

Попробуем еще раз :) Я хочу вот что. Сам мувик лежит по адресу
www.322222.dp.ua/topX/topX.swf . Это раз.

В мувике есть два объекта типа LoadVars и XML.

lv = new LoadVars();
lv.load("http://consult.ric.ua/topX/topX.php");

Запускается на выполняется скрипт, который проверяет на правильность, существование и т.п. файла top10.xml и, если не все в порядке, генерит xml-файл заново.
Как только скрипт выполнен

xml = new XML();
xml.load("http://consult.ric.ua/topX/top10.xml");

В корне consult.ric.ua выложил файл crossdomain.xml:

<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="www.322222.dp.ua" />
<allow-access-from domain="322222.dp.ua" />
<allow-access-from domain="consult.ric.ua" />
</cross-domain-policy>

. Насколько я понял из всего вышесказанного, а также из документации, мой мувик, который лежит на www.322222.dp.ua автоматом лезет в корень consult.ric.ua и проверяет файл crossdomain.xml. Если он себя там находит, то должен свободно пользоваться ресурсами этого домена. Или я все напутал?

Lego 18.08.2004 13:06

Можно ли как-то во флэше проверить грузиться ли в него crossdomain.xml?

dimarik 18.08.2004 13:12

А в кэше браузера есть этот файл?

Lego 18.08.2004 13:29

Есть

Lego 18.08.2004 13:33

Ну не знаю :(
Я уже и монитор протер. Все равно не видит этот долбанный crossdomain.xml

Елё 18.08.2004 13:58

Я говорил про случай www.322222.dp.ua и 322222.dp.ua и когда xml присутствует на этих же доменах

с кросдоменами я не связывался. но могу предположить что crossdomain.xml должен лежать на домене где выложен swf а не на домене с XML

попробуй таки положить crossdomain.xml в корень 322222.dp.ua

Lego 18.08.2004 14:09

Не хочу показаться упрямым, но все-таки, если указывать top10.xml, а не 322222.dp.ua/topX/top10.xml - ну не грузится оно.

322222 и www.322222 - разные домены, поэтому тут нужно использовать crossdomain.
По поводу того, где выкладывать этот crossdomain, так в хелпе четко написано:

Цитата:

When a Flash document attempts to access data from another domain, Flash Player automatically attempts to load a policy file from that domain. If the domain of the Flash document that is attempting to access the data is included in the policy file, the data is automatically accessible.
Т.е. выкладывать на том же сайте, где и необходимая тебе инфа.

iNils 18.08.2004 14:12

Когда заходишь на http://322222.dp.ua/topX/topX.swf, то crossdomain.xml ищеться на http://www.322222.dp.ua/.
Он там лежит?

Елё 18.08.2004 14:50

по поводу относительных путей, сравни:

http://st4.mdo.ru/foto/test.swf
http://mail.mdo.ru/foto/test.swf

исходник http://st4.mdo.ru/foto/test.fla

Lego 18.08.2004 15:03

2 Inils: еще раз. Флэш лежит на 322222. Данные на consult.ric.ua.

2 Елё: fla не грузится :(

Елё 18.08.2004 15:26

Вложений: 1
как это не грузится?
не открывется?

сохранил в MX

iNils 18.08.2004 15:29

crossdomain.xml должен лежать в том домене от куда ты во флеш грузишь top10.xml

У нем перечислены домены, которым можно отправлять твой xml.

Пример:
Есть: domain1.com и domain2.com
На domain1.com есть sample.xml и флеш flash.swf (в котором стоит абсолютный путь к xml http://domain1.com/sample.xml)
На domain2.com есть только тот же самый flash.swf

Для того что бы ты мог с http://domain2.com/flash.swf мог загрузить http://domain1.com/sample.xml на domain1 нужно положить croosdomain.xml
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="domain1.com" />
<allow-access-from domain="domain2.com" />
</cross-domain-policy>

Все проверено и работает

Lego 18.08.2004 16:12

2 Еле: спасибо. Играю в игру "Найди 10 отличий и пойми почему не работает" :)

2 iNils: чем все, что ты сказал, отличается от моего случая? ;)

Проводими анализ:

Цитата:

http://domain1.com/sample.xml
- http://consult.ric.ua/topX/top10.xml
http://consult.ric.ua/topX/topX.php

Цитата:

http://domain2.com/flash.swf
- http://www.322222.dp.ua/topX/topX.swf

crossdomain лежит на
http://consult.ric.ua/crossdomain.xml

Содержание:
<cross-domain-policy>
<allow-access-from domain="www.322222.dp.ua" />
<allow-access-from domain="322222.dp.ua" />
<allow-access-from domain="consult.ric.ua" />
</cross-domain-policy>

Хм.... Не наю. Уже все, что можно, выкладывал в рут.
Думал, может быть проблемы во вложенных каталогах /topX/. И просто пытался загрузить xml без предварительного запуска скрипта на php - НИ-ЧЕ-ГО. НО-ЛЬ. :(
Билин.

iNils 18.08.2004 16:22

В том что мой случай работает.
Попробуй для начала все сделать в корне домена, а не внутри папок.

dimarik 18.08.2004 16:51

Привожу лог сниффера

Код:

308: Client to Server (375 bytes)
GET http://www.322222.dp.ua/topX/topX.swf HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: ru
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: www.322222.dp.ua
Proxy-Connection: Keep-Alive

308: Server to Client (4412 bytes)
HTTP/1.1 200 OK
Via: 1.1 ISA
Connection: Keep-Alive
Proxy-Connection: Keep-Alive
Content-Length: 4021
Date: Wed, 18 Aug 2004 11:59:58 GMT
Content-Type: application/x-shockwave-flash
Server: Apache/1.3.26 (Unix) PHP/4.2.3 mod_ssl/2.8.10 OpenSSL/0.9.6d
Last-Modified: Wed, 18 Aug 2004 11:30:42 GMT
ETag: "5d5d4b-fb5-41233de2"
Accept-Ranges: bytes
Keep-Alive: timeout=15, max=100

[HEX of SWF Body SKIPPED]

308: Client to Server (237 bytes)
GET http://www.322222.dp.ua/topX/topX.ph...=1092830257375 HTTP/1.0
Accept: */*
x-flash-version: 7,0,19,0
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: www.322222.dp.ua
Proxy-Connection: Keep-Alive

308: Server to Client (204 bytes, Incomplete last line)
HTTP/1.1 200 OK
Via: 1.1 ISA
Date: Wed, 18 Aug 2004 11:59:59 GMT
Content-Type: text/html
Server: Apache/1.3.26 (Unix) PHP/4.2.3 mod_ssl/2.8.10 OpenSSL/0.9.6d
X-Powered-By: PHP/4.2.3

topX=top10.xml
308: Server disconnected
308: Disconnected from Client

Похоже, что флэш, дождавшись ответа от php-скрипта не обращается за xml'ем

dimarik 18.08.2004 16:54

Очень похоже на то, что условие:

Код:

if (!lv.loaded) {
        gotoAndPlay (2);
    }

выполняется всегда, и , след-но не следует переход на следующий кадр

iNils 18.08.2004 16:56

Твоя ссылка:
http://www.322222.dp.ua/topX/topX.swf
у меня работает.

Lego 18.08.2004 16:56

ХМ! Еще бы она не работала. Внутри этого мувика все пути
www.3222222.dp.ua/topX/... и никаких кроссдоменов.
Короче, частное решение. Приходится 2 раза на 2 сайтах исполнять один и тот же скрипт, формирующий один и тот же xml, но кладущий его каждый в свою папку. Вот.


В общем буду мучать зверька дальше. Всем большое спасибо за советы.

dimarik 18.08.2004 17:02

А вот еще лог, гружу с http://322222.dp.ua/topX/topX.swf?rnd=12333:

Код:

404: Client connected; 127.0.0.1:4132
404: Connecting to Server
404: Client to Server (369 bytes)
GET http://322222.dp.ua/topX/topX.swf?rnd=12333 HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: ru
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: 322222.dp.ua
Proxy-Connection: Keep-Alive

404: Connected to Server
404: Server to Client (4412 bytes)
HTTP/1.1 200 OK
Via: 1.1 ISA
Connection: Keep-Alive
Proxy-Connection: Keep-Alive
Content-Length: 4021
Date: Wed, 18 Aug 2004 12:09:34 GMT
Content-Type: application/x-shockwave-flash
Server: Apache/1.3.26 (Unix) PHP/4.2.3 mod_ssl/2.8.10 OpenSSL/0.9.6d
Last-Modified: Wed, 18 Aug 2004 11:30:42 GMT
ETag: "5d5d4b-fb5-41233de2"
Accept-Ranges: bytes
Keep-Alive: timeout=15, max=100

[SWF FLASH HexCode Skipped]

404: Client to Server (214 bytes)
GET http://www.322222.dp.ua/crossdomain.xml HTTP/1.0
Accept: */*
x-flash-version: 7,0,19,0
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: www.322222.dp.ua
Proxy-Connection: Keep-Alive

404: Server to Client (474 bytes)
HTTP/1.1 404 Not Found
Via: 1.1 ISA
Date: Wed, 18 Aug 2004 12:09:35 GMT
Content-Type: text/html; charset=iso-8859-1
Server: Apache/1.3.26 (Unix) PHP/4.2.3 mod_ssl/2.8.10 OpenSSL/0.9.6d

404: Server disconnected
404: Disconnected from Client

Заметь, перед запросом php-скрипта, запрашивается crossdomen.xml. Его там нет, вызов скрипта обламывается!

iNils 18.08.2004 17:07

Об наличии crossdomain.xml на http://www.322222.dp.ua/ я уже спрашивал )))

Lego 18.08.2004 17:07

А не мог бы ты еще раз попробовать. Он там уже есть :D
Просто разочаровавшись, я его прибил.

Lego 18.08.2004 17:15

Кстати, вопрос по ходу дела. Если просто грузить любой хмл
типа

<?xml version="1.0"?>
<!-- http://consult.ric.ua/crossdomain.xml -->
<cross-domain-policy>
<allow-access-from domain="www.322222.dp.ua" />
<allow-access-from domain="322222.dp.ua" />
<allow-access-from domain="consult.ric.ua" />
</cross-domain-policy>


то грузится ничего не будет

Если грузить так

<cross-domain-policy>
<allow-access-from domain="www.322222.dp.ua" />
<allow-access-from domain="322222.dp.ua" />
<allow-access-from domain="consult.ric.ua" />
</cross-domain-policy>


Тогда грузится. С таким не сталкивались?

iNils 18.08.2004 17:18

Хочешь сказать что комментарий делает xml не работоспособным?


Часовой пояс GMT +4, время: 05:13.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.