2015-09-02 2 views
0

У меня проблема с загрузкой данных с моего PHP-сервера. Я могу получить к нему доступ просто по ссылке, но в actionscript, когда я пытаюсь загрузить его, как в этом потоке: Get and parse JSON in Actionscript он не работает.Actionscript3 SecurityError # 2048

Он просто выбрасывает событие [SecurityErrorEvent type = "securityError" bubbles = false cancelable = false eventPhase = 2 text = "Ошибка # 2048"]. Что мне делать?

<cross-domain-policy> 
    <site-control permitted-cross-domain-policies="all"/> 
    <allow-access-from domain="*"/> 
    <allow-http-request-headers-from domain="*" headers="*"/> 
</cross-domain-policy> 

Я попытался добавить этот файл почти везде: Я кое-что о междоменном-политики, так что я добавил файл crossdomain.xml на сервер PHP, как это читать. Могу ли я сделать что-то еще?

код отвечает за загрузку этих данных:

private function getURL():void 
    { 
     var request:URLRequest=new URLRequest("http://Journey.pe.hu/Journey/Users/"); 
     ExternalInterface.call("console.log", request.url); 
     request.requestHeaders=[new URLRequestHeader("Content-Type", "application/json")]; 
     request.method=URLRequestMethod.GET; 
     var loader:URLLoader=new URLLoader(); 
     loader.addEventListener(Event.COMPLETE, receive); 
     loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, notAllowed); 
     loader.addEventListener(IOErrorEvent.IO_ERROR, notFound); 
     loader.load(request); 
     ExternalInterface.call("console.log", "l1"); 
    } 

    protected function notAllowed(event:SecurityErrorEvent):void 
    { 
     ExternalInterface.call("console.log", event.toString());    
    } 

    protected function notFound(event:IOErrorEvent):void 
    { 
     ExternalInterface.call("console.log", "NOT FOUND"); 
    } 

    protected function receive(event:Event):void 
    { 

     ExternalInterface.call("console.log", "Nameldasodoad"); 
     var loader:URLLoader = URLLoader(event.target); 
     var jsonArray:Array = com.adobe.serialization.json.JSON.decode(loader.data); 

     //ExternalInterface.call("console.log", "Name " + jsonArray[0].Name); 
     //var jsonArray:Array = com.adobe.serialization.JSON.decode(loader.data); 
    } 
+0

Это ошибка Нарушение изолированной среды безопасности, которые вы можете избежать для локального тестирования, добавив швейцарских франков в список надежных расположений, для этого посмотрите в [мой ответ на этот вопрос] (HTTP: // StackOverflow .com/a/28719316/2256820), и при тестировании в Интернете вам нужно добавить файл crossdomain.xml (который не существует на вашем сайте), для этого взгляните на мой ответ [здесь] (http: // stackoverflow.com/a/27581656/2256820). – akmozo

ответ

1

Где вы добавить crossdomain.xml? В принципе, он должен быть добавлен в корневой каталог.
В этом случае

http://journey.pe.hu/crossdomain.xml

По умолчанию, флэш нагрузки crossdomain.xml от корня автоматически.

Если вы не можете добавить туда, добавьте сюда

http://Journey.pe.hu/Journey/crossdomain.xml

и загрузить вручную.

private function getURL():void 
{ 
    // load crossdomain.xml manually. 
    Security.loadPolicyFile("http://Journey.pe.hu/Journey/crossdomain.xml"); 

    var request:URLRequest=new URLRequest("http://Journey.pe.hu/Journey/Users/"); 
    ExternalInterface.call("console.log", request.url); 
    request.requestHeaders=[new URLRequestHeader("Content-Type", "application/json")]; 
    request.method=URLRequestMethod.GET; 
    var loader:URLLoader=new URLLoader(); 
    loader.addEventListener(Event.COMPLETE, receive); 
    loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, notAllowed); 
    loader.addEventListener(IOErrorEvent.IO_ERROR, notFound); 
    loader.load(request); 
    ExternalInterface.call("console.log", "l1"); 
} 
+0

@bonio Кажется, что вы добавили crossdomain.xml, и я тестировал, но не работал. Я предполагаю, что это связано с настройками crossdomain.xml. Не удалось удалить тег ? Некоторые настройки неверны. –

+0

Спасибо, что работает сейчас – borkowij

Смежные вопросы