Я получаю ошибку безопасности Actionscript 2048, но я не думаю, что это междоменная проблема.Может ли это быть что-то еще? - PullRequest
1 голос
/ 04 ноября 2011

Я пытаюсь запросить метод API на том же сервере, на котором размещен SWF-файл. Я получаю ошибку безопасности 2048. Это происходит независимо от того, использую ли я POST или GET, и если оставить данные запроса пустыми, это не улучшит ситуацию. В обоих случаях ничего не отправляется, и я получаю SecurityErrorEvent, чтобы посмотреть на него. Все работает плавно из IDE.

Апплет не пытается загрузить файл crossdomain.xml, поэтому он явно не рассматривает запрос как междоменный и не должен быть задействован в других доменах. Загрузка изображений из swfRoot работает нормально.

Есть ли что-нибудь еще, что могло вызвать эту ошибку? Кроме того, могу ли я узнать больше информации о том, что именно происходит? Отслеживание toString ErrorEvent дает мне только «Ошибка 2048» - в других вопросах я видел ссылку на сообщения об этой ошибке, которые гласят: «не удается загрузить данные из XXX», но я не могу получить одно из них использую Flash CS5).

Это код, который не работает:

var url:String = apiRoot + 'students/'+this.student.id+"/?authorization="+this.student.id+":"+authToken; //this all seems to work fine

var request:URLRequest = new URLRequest(url);
var loader:URLLoader = new URLLoader();
var toSend:Object = foo
request.data = JSON.encode(toSend)
request.method = URLRequestMethod.POST; //Post is the one the server is expecting, but I get identical issues with GET
loader.load(request);

(теперь исправлено - см. Ответ ниже)

Ответы [ 3 ]

1 голос
/ 02 декабря 2011

Я наконец нашел ответ (где «найдено» означает «заплатил кому-то еще, чтобы найти», но все же!).

Это оказалось очень странной ошибкой - проблема с тем, как Flash обрабатываетотносительный путь - вы можете прочитать об этом здесь от его завоевателя!

0 голосов
/ 05 ноября 2011

[[Редактировать]]

Понял, что выполнение не проблема, хотя я все равно рекомендую код ниже.Если вы проводите тестирование вне среды IDE и в браузере с локальным путем к файлу, вам нужно будет предоставить разрешения swf через консоль флэш-безопасности.

Консоль безопасности

Удачи.


Я никогда не использовал JSON.encode (obj) для данных запроса.Полагаю, что может работать, но вы должны выбрать объект URLVariables.

var loader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest("http://posttestserver.com/post.php");
var requestVariables:URLVariables = new URLVariables();

requestVariables.key = "value";
request.data = requestVariables;
request.method = URLRequestMethod.POST;

loader.load(request);

Протестировано на HTTP-сервере Генри Пост-Дампинга

0 голосов
/ 04 ноября 2011

Если вы делаете это в своем коде встраивания?

attributes.allownetworking = "all";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...