Можно ли обойти требование cross-domain.xml для приложения Adobe AIR, созданного с помощью Flex? - PullRequest
0 голосов
/ 23 апреля 2010

Возможно ли для приложения Adobe AIR подключиться к удаленному веб-сервису, который не предоставляет файл cross-domain.xml? Если да, то как настроить «песочницу» безопасности в Air, чтобы разрешить это?

Я попытался подключиться через сокет и получил следующую ошибку:

securityErrorHandler: 
[SecurityErrorEvent 
    type="securityError" 
    bubbles=false 
    cancelable=false 
    eventPhase=2 
    text="Error #2048: Security sandbox violation: app:/MyApp.swf cannot 
            load data from gmail.com:5222." errorID=0
]

1 Ответ

4 голосов
/ 23 апреля 2010

Приложения AIR не имеют такой же политики домена, как Flash Player в браузере. Таким образом, вам обычно не нужны файлы кросс-доменной политики с приложениями AIR. Однако иногда AIR генерирует SecurityErrorEvent, который можно игнорировать. Вот пример:

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml">

  <mx:applicationComplete>
    <![CDATA[
      var s:Socket = new Socket();
      s.addEventListener(ProgressEvent.SOCKET_DATA, function(event:ProgressEvent):void {
        t.text += event.target.readUTFBytes(event.target.bytesAvailable);
      });
      s.addEventListener(Event.CONNECT, function(event:Event):void {
        t.text += "Event.CONNECT\n\n";
        s.writeUTF("GET / HTTP/1.0\n\n");
      });
      s.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function(event:SecurityErrorEvent):void {
        trace('security sandbox error ignored');
      });
      s.connect("www.jamesward.com", 80);
    ]]>
  </mx:applicationComplete>

  <mx:TextArea id="t" width="100%" height="100%"/>

</mx:WindowedApplication>
...