Задать вопрос

Как корректно подключить flash .swf к сайту, что бы проходили кроссдоменные запросы?

Добрый день.
Требуется получать данные с gdata.youtube.com/, у которого присутствует как и разрешающий crossdomain.xml так и необходимые заголовки.
Имеется .swf файл в котором данные получаются через
var loader:URLLoader = new URLLoader();
 var request:URLRequest = new URLRequest(_url);
 loader.load(request);
 loader.addEventListener(Event.COMPLETE, onComplete);
 loader.addEventListener(IOErrorEvent.IO_ERROR,ioErrHandler);
 loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR,secErrorHandler);
 loader.addEventListener(HTTPStatusEvent.HTTP_STATUS,statusHttpHandler);
 function statusHttpHandler(event:HTTPStatusEvent):void {
  Alert.show("HTTPStatusEvent"+event.status)
 }
 function ioErrHandler(event:IOErrorEvent):void {
  Alert.show("Error load xml")
 }
 function secErrorHandler(event:SecurityErrorEvent):void {
  Alert.show("SecurityErrorEvent"+event.text)
 }
 function onComplete(event:Event):void {
  var loader:URLLoader = URLLoader(event.target);
  externalXML = new XML(loader.data);
  funResult(externalXML.toXMLString());
 }

С локалхоста все ОК, но перенося на сервер(назовем его example.com, (доменная зона .com)) получаем
SecurityErrorEventError #2048: Security sandbox violation: example.com/sob_client.swf?v=37767 cannot load data from gdata.youtube.com/someurl

Кросс-доменный ajax с этого сервера проходит без проблем.

Код подключения флеша следующий
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="1000" height="1130" id="sob_client" data="sob_client.swf?v=96745">
  <param name="movie" value="sob_client.swf?v=96745">
  <param name="quality" value="high">
  <param name="bgcolor" value="#ffffff">
  <param name="allowScriptAccess" value="Always">
  <param name="allowNetworking" value="All">
  <param name="allowFullScreen" value="true">
  <param name="wmode" value="opaque">
  <param name="FlashVars" value="__serverURL=rtmp://example.com:1935&__lang=ru&__typeDrink=1&__msg_func=msgrecieved&__new_partner=new_partner">
  <!--[if !IE]>-->
  <object type="application/x-shockwave-flash" data="sob_client.swf?v=2918" width="1000" height="1130">
    <param name="quality" value="high">
    <param name="bgcolor" value="#ffffff">
    <param name="allowScriptAccess" value="Always">
    <param name="allowNetworking" value="All">
    <param name="allowFullScreen" value="true">
    <param name="wmode" value="opaque">
    <param name="FlashVars" value="__serverURL=rtmp://example.com:1935&__lang=ru&__typeDrink=1&__msg_func=msgrecieved&__new_partner=new_partner">
    <!--<![endif]-->
    <!--[if gte IE 6]>-->
    <p>Either scripts and active content are not permitted to run or Adobe Flash Player version 11.1.0 or greater is not installed.                    </p>
    <!--<![endif]-->
    <a href="http://www.adobe.com/go/getflashplayer">
      <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash Player">
    </a>
    <!--[if !IE]>-->
  </object>
  <!--<![endif]-->
</object>


Собственно вопрос:
Что исправить/дописать в код подключения или AS код флеша, что бы не нарываться на Security sandbox violation?
  • Вопрос задан
  • 4550 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
spmbt
@spmbt
Может быть, у Вас https или 3-й уровень доменного имени, отчего, говорят в kb2.adobe.com/cps/142/tn_14213.html, может быть
however these are no longer compatible in Flash Player 7 because of exact domain matching rules. An additional rule, also added under Flash Player 7, is content accessed via HTTP may not access data from a HTTPS location.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы