Показать сообщение отдельно
Старый 17.02.2010, 19:30
Furinax вне форума Посмотреть профиль Отправить личное сообщение для Furinax Найти все сообщения от Furinax
  № 1  
Ответить с цитированием
Furinax

Регистрация: Mar 2009
Адрес: Moscow
Сообщений: 469
По умолчанию SecurityError`ы при загрузке swf с другого сервера

Всем добрый день. При использовании АПИ Вконтакте столкнулся с новой для меня проблемой, хотелось бы узнать как её решили те кто разбираются лучше меня.

Проблема в следующем.
У меня есть swf, получающий данные с вконтакта, а затем основываясь на полученных данных делает запрос к стороннему серверу и получает данные оттуда. Если залить этот swf на вконтакте и запускать оттуда, то все работает как надо. Но ввиду того, что файл весит больше 1 мб, я решил загружать его через прелоудер. Написал свой прелоудер, протестировал, работает тоже как надо. Далее заливаю прелоудер на вконтакте, и он загружает описанный выше swf-файл с удаленного сервера. В прелоудере прописал Security.allowDomain("адрес сервера"), так как загружаемый swf-файл обращается к сцене. Теперь вроде бы все должно работать, но не работает. Security Error (номер не помню) и пишет, что загружаемый swf-файл не может сделать запрос к АПИ вконтакте. В корень удаленного сервера закинул кроссдомейн, но все равно не помогает.

Вот код запроса из загружаемого swf-файла.
Код AS3:
private function loadDataFromVK():void {
			var loader1:URLLoader = new URLLoader();
			var variablesToSend:URLVariables = new URLVariables();
			var viewerID:String = root.loaderInfo.parameters.viewer_id;
 
			var apiID:String = "1715580";
			var secretKey:String = "csu8CqrlFD";
			var methodFromAPI:String = "getProfiles";
 
			variablesToSend.api_id = apiID;
			variablesToSend.sig = MD5.hash(viewerID + 'api_id=' + apiID + 'fields=first_name,last_name,sex' + 'method=' + methodFromAPI + 'uids=' + viewerID + 'v=2.0' + secretKey);
			variablesToSend.v = "2.0";
			variablesToSend.fields = "first_name,last_name,sex";
			variablesToSend.uids = viewerID;
			variablesToSend.method = methodFromAPI;
 
			loader1.addEventListener(Event.COMPLETE, onLoadDataFromVK);
 
			uId = viewerID;
 
			CommonFunctions.sendData(variablesToSend, loader1, "http://api.vkontakte.ru/api.php");
		};
Еще хотелось бы заодно узнать про root.loaderInfo.parameters.viewer_id. Если swf-файл загружен через прелоудер, то данная строка обращается к корню прелоудера или же надо parent.root.loaderInfo.parameters.viewer_id. Сам протестить это не могу, так как ошибка безопасности не дает мне дойти до этого момента.