Про crossdomain.xml

2,057 views
Skip to first unread message

Alexander Negoda

unread,
Sep 2, 2008, 6:01:52 AM9/2/08
to ruf...@googlegroups.com
Всем привет.
Есть апп загружаемое из домена example.com. Требуется получить данные из того же (example.com) домена, но с другого порта - 4455.
Возле app.swf положил crossdomain.xml с таким содержимым:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <allow-access-from domain="*" to-ports="*" secure="false" />
</cross-domain-policy>

И в самом апп добавил следующее:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
   initialize="Security.loadPolicyFile('http://example.com/crossdomain.xml');"
  >


Смотрю firebug.  Файл crossdomain.xml загружается, но само приложение всё-равно ругается:

Error #2044: Unhandled SecurityErrorEvent:. text=Error #2048: Security sandbox violation: http:/
/example.com/app.swf cannot load data from example.com:4455.
  ...............................
...................................

Что не так? Куда смотреть?
Спасибо.

Ivannn

unread,
Sep 2, 2008, 6:07:17 AM9/2/08
to ruf...@googlegroups.com

Первое, что пришло в голову, перегрузи браузер :)

(была у меня похожая проблема, полдня бился...)

_______________________________________

_______________________________________


-- 

Burzilov Ivan (iva...@list.ru)

Alexander Negoda

unread,
Sep 2, 2008, 6:35:34 AM9/2/08
to ruf...@googlegroups.com
Нет...  Не помогает. Видать я где-то ошибся.

2 сентября 2008 г. 15:07 пользователь Ivannn <iva...@list.ru> написал:

kuril

unread,
Sep 2, 2008, 7:21:35 AM9/2/08
to ruFlex
> Error #2044: Unhandled SecurityErrorEvent:. text=Error #2048: Security
> sandbox violation: http:/**/example.com**/app.swf cannot load data from **
> example.com**:4455.

(example.com !== example.com:4455), потому что в swf домен
сравнивается вместе с портом, то есть надо разрешить
Security.allowDomain("example.com:4455")
http://livedocs.adobe.com/flex/3/langref/flash/system/Security.html#allowDomain()

whitered

unread,
Sep 2, 2008, 7:57:46 AM9/2/08
to ruf...@googlegroups.com
тебе нужно забирать кроссдомайн через 4455 порт

--
dmitry zhelnin

Alexander Negoda

unread,
Sep 2, 2008, 8:25:38 AM9/2/08
to ruf...@googlegroups.com


2 сентября 2008 г. 16:21 пользователь kuril <kuril2008a...@gmail.com> написал:

Нет. Так не работает:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
   initialize="Security.loadPolicyFile('http://example.com/crossdomain.xml'); Security.allowDomain('example.com:4455')"
  >

Alexander Negoda

unread,
Sep 2, 2008, 8:29:10 AM9/2/08
to ruf...@googlegroups.com


2 сентября 2008 г. 16:57 пользователь whitered <dmitry....@gmail.com> написал:

тебе нужно забирать кроссдомайн через 4455 порт

Я так понимаю, что  crossdomain.xml должен лежать РЯДОМ с swf-файлом. То есть 4455 порт тут не при чём - на этом порту работает сервис отдающий данные.
Или я не прав?

whitered

unread,
Sep 2, 2008, 8:38:48 AM9/2/08
to ruf...@googlegroups.com
не прав
он должен лежать на сервере, с которого ты хочешь брать данные, по умолчанию - в корне
а рядом с флешкой он не нужен - тот сервер, откуда ты взял флешку, и так может давать ей данные без всяких разрешений


Я так понимаю, что  crossdomain.xml должен лежать РЯДОМ с swf-файлом. То есть 4455 порт тут не при чём - на этом порту работает сервис отдающий данные.
Или я не прав?

--
dmitry zhelnin

kuril

unread,
Sep 2, 2008, 9:31:08 AM9/2/08
to ruFlex

> Нет. Так не работает:
> *<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
> initialize="Security.loadPolicyFile('http://example.com/crossdomain.xml')<http://example.com/crossdomain.xml%27%29>;
> Security.allowDomain('*example.com*:4455')"
> >*
Ошибся, Security.allowDomain - это кроссскриптинг между флешками с
разных доменов, crossdomain.xml должен запрашиваться плеером по
умолчанию http://example.com:4455/crossdomain.xml , если не загружен
принудительно через loadPolicyFile().

When considering a request that requires a policy file, Flash Player
or AIR always waits for the completion of any policy file downloads
before denying a request. As a final fallback, if no policy file
specified with loadPolicyFile() authorizes a request, Flash Player or
AIR consults the original default location, /crossdomain.xml.

Alexander Negoda

unread,
Sep 2, 2008, 9:44:39 AM9/2/08
to ruf...@googlegroups.com


2 сентября 2008 г. 18:31 пользователь kuril <kuril2008a...@gmail.com> написал:



> Нет. Так не работает:
> *<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
>    initialize="Security.loadPolicyFile('http://example.com/crossdomain.xml')<http://example.com/crossdomain.xml%27%29>;
> Security.allowDomain('*example.com*:4455')"
>   >*
Ошибся, Security.allowDomain - это кроссскриптинг между флешками с
разных доменов, crossdomain.xml должен запрашиваться плеером по
умолчанию  http://example.com:4455/crossdomain.xml , если не загружен
принудительно через loadPolicyFile().

Повторюсь:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
   initialize="Security.loadPolicyFile('http://example.com/crossdomain.xml'); Security.allowDomain('example.com:4455')"
  >

Файл crossdomain.xml загружается принудительно, но толку нет...
С  http://example.com:4455/crossdomain.xml я его получать не могу - на этом (4455) порту работает сервис, который вообще не имеет папки. Да и протокол не http://, а stomp://example.com:4455

whitered

unread,
Sep 2, 2008, 9:52:03 AM9/2/08
to ruf...@googlegroups.com
для начала я бы убедился, что получится работать с таким протоколом. есть большие сомнения в этом.
а если все же это возможно, то имхо придется придумать, как получить кроссдомайн с http://example.com:4455/crossdomain.xml
и если кроссдомайн лежит в корне сервера, то загружать его принудительно не нужно - плеер сделает это сам


Повторюсь:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
   initialize="Security.loadPolicyFile('http://example.com/crossdomain.xml'); Security.allowDomain('
example.com:4455')"
  >

Файл crossdomain.xml загружается принудительно, но толку нет...
С  http://example.com:4455/crossdomain.xml я его получать не могу - на этом (4455) порту работает сервис, который вообще не имеет папки. Да и протокол не http://, а stomp://example.com:4455


--
dmitry zhelnin
Reply all
Reply to author
Forward
0 new messages