Просмотр полной версии : Загрузка 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.
СТОП! Все не так :)
Мувик можно посмотреть по:
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, набранный в броузере и передавать его во флэш? Или есть более грамотные пути решения этой проблемы.
Большое спасибо.
Внутри флеша соответсвенно прописано
xml.load("http://www.322222.dp.ua/......")
А если сделать xml.load("http://322222.dp.ua/......").
А если сделать xml.load("http://322222.dp.ua/......").
, тогда люди, которые заходят на сайт при помощи www.322222.dp.ua, никогда не дождутся загрузки xml :D .
Вопрос вообще-то про универсальность загрузки: как сделать так, чтобы хмл загружался в любом из этих двух случаев.
выложи в руте сайта файл 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"
А это где именно. Что-то поискал по хелпу флэша - не нашел. У меня мх2004. Или мне надо хелп обновить?
У меня тоже MX2004
Help -> ActionScript Reference Guide -> Working with External Data -> Flash Player security features
Большое спасибо. Кажется что-то нашел. Буду разбираться
Что-то наверное не так делаю. На сайте
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: :(
crossdomain.xml swf-кой подгружается? Можно посмотреть в log-окне Proxomitro'на, например
Я конечно прошу прощение, но что есть Proxomitron?
И еще. В самой swf'ке нужно как-то указывать этот crossdomain.xml?
http://proxomitron.da.ru/ это мощный фильтр вэб-контента и http-заголовков. У него присутствует фича - просмотр HTTP-заголовков принимаемых и отправляемых, а также POST-данных. С помощью его лог-окна можно посмотреть весь "диалог" между браузером(swf-проигрывателем) и сервером.
crossdomen.xml не надо нигде прописывать. Флэшка (ActiveX или plugin браузера) сама его пытается найти в руте сервера, при условии, что сама флэшка была загружена с одного домена, а внутри нее есть вызовы на другие домены. В этом случае, прежде чем запросить и подгрузить в себя внешний (твой) xml, swf и т.д. сначала флэшка ищет и, если нахотит то подгружает и анализирует crossdomen.xml. А затем, если разрешено в crossdomen.xml, подгружает запрашиваемый контент.
Надеюсь я ясно высказываюсь.
Зачем так сложно?
Сделай просто путь относительным, и грузи без проблем
xml.load("top10.xml");
2 Еле: Ты так говоришь, потому что пробовал или потому что тебе кажется? :) У меня ничего не получилось. К тому же все равно остается вопрос о загрузке хмл с другого домена (для меня остается :) )
пробовал конечно
не однократно
я вообще например не знаю на каких сайтах мои ролики работают... каждый может скачать и у себя на сайте выложить. так что в моем случае вообще прямые пути не катят
Теряюсь в загадках почему это может не работать
скорее всего путь относительный неправильный
посмотри чему равно _root._url
это должна быть таже директория как и top10.xml
Да с _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. Если он себя там находит, то должен свободно пользоваться ресурсами этого домена. Или я все напутал?
Можно ли как-то во флэше проверить грузиться ли в него crossdomain.xml?
А в кэше браузера есть этот файл?
Ну не знаю :(
Я уже и монитор протер. Все равно не видит этот долбанный crossdomain.xml
Я говорил про случай www.322222.dp.ua и 322222.dp.ua и когда xml присутствует на этих же доменах
с кросдоменами я не связывался. но могу предположить что crossdomain.xml должен лежать на домене где выложен swf а не на домене с XML
попробуй таки положить crossdomain.xml в корень 322222.dp.ua
Не хочу показаться упрямым, но все-таки, если указывать 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.
Т.е. выкладывать на том же сайте, где и необходимая тебе инфа.
Когда заходишь на http://322222.dp.ua/topX/topX.swf, то crossdomain.xml ищеться на http://www.322222.dp.ua/.
Он там лежит?
по поводу относительных путей, сравни:
http://st4.mdo.ru/foto/test.swf
http://mail.mdo.ru/foto/test.swf
исходник http://st4.mdo.ru/foto/test.fla
2 Inils: еще раз. Флэш лежит на 322222. Данные на consult.ric.ua.
2 Елё: fla не грузится :(
как это не грузится?
не открывется?
сохранил в MX
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>
Все проверено и работает
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 - НИ-ЧЕ-ГО. НО-ЛЬ. :(
Билин.
В том что мой случай работает.
Попробуй для начала все сделать в корне домена, а не внутри папок.
Привожу лог сниффера
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.php?top=10&rnd=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'ем
Очень похоже на то, что условие:
if (!lv.loaded) {
gotoAndPlay (2);
}
выполняется всегда, и , след-но не следует переход на следующий кадр
Твоя ссылка:
http://www.322222.dp.ua/topX/topX.swf
у меня работает.
ХМ! Еще бы она не работала. Внутри этого мувика все пути
www.3222222.dp.ua/topX/... и никаких кроссдоменов.
Короче, частное решение. Приходится 2 раза на 2 сайтах исполнять один и тот же скрипт, формирующий один и тот же xml, но кладущий его каждый в свою папку. Вот.
В общем буду мучать зверька дальше. Всем большое спасибо за советы.
А вот еще лог, гружу с 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. Его там нет, вызов скрипта обламывается!
Об наличии crossdomain.xml на http://www.322222.dp.ua/ я уже спрашивал )))
А не мог бы ты еще раз попробовать. Он там уже есть :D
Просто разочаровавшись, я его прибил.
Кстати, вопрос по ходу дела. Если просто грузить любой хмл
типа
<?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>
Тогда грузится. С таким не сталкивались?
Хочешь сказать что комментарий делает xml не работоспособным?
По поводу комментария не уверен, но вот при наличии заголовка - так это точно. У меня, во всяком случае.
+++GET 258+++
Using Proxy - isa.twins.ru:8080
GET http://322222.dp.ua/topX/topX.swf?rnd=12333 HTTP/1.0
Accept: */*
Accept-Language: ru
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: 322222.dp.ua
Connection: keep-alive
+++RESP 258+++
HTTP/1.0 200 OK
Via: 1.1 ISA
Content-Length: 4021
Date: Wed, 18 Aug 2004 12:33:10 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=98
+++CLOSE 258+++
+++GET 259+++
Using Proxy - isa.twins.ru:8080
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
Connection: keep-alive
+++RESP 259+++
HTTP/1.0 200 OK
Via: 1.1 ISA
Content-Length: 268
Date: Wed, 18 Aug 2004 12:25:49 GMT
Age: 446
Content-Type: text/xml
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 12:21:53 GMT
ETag: "5d5d48-10c-412349e1"
Accept-Ranges: bytes
Keep-Alive: timeout=15, max=100
+++CLOSE 259+++
Сейчас crossdomen.xml прогружается, но php-скрипт все равно не вызывается
Это ты в окне proxomitrona смотришь?
Прошу прощения. Уже увидел, что нет. А что за сниффер такой? Тоже фильтр?
Еще TCP Viewer здесь: www.westbrooksoftware.com
Чувствую, что дальше, чем сделано, дело не пойдет. Может быть там какие-то проблемы с сервером, а мы тут мучаемся.
Всем еще раз большое спасибо.
Сохрани crossdomain.xml в кодировке UTF-16, может в этом проблема?
Дело в том, что мувик получает этот файл в кодировке ASCII, а по опыту помню, что флэша работает только с UNICODE (UTF-16).
Большое тебе, dimarik, человеческое (!) спасибо :p
Ну надо же было кому-то завестись. Или мне или флэшке... завелся я.
Все равно ведь заставлю работать. А она упирается. Вопрос только времени.
Попробую еще раз все с начала проделать. Поэкспериментирую с рутом и с каталогами. Ну и с фильтрами.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.