Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.05.2011, 02:37
pas.delger вне форума Посмотреть профиль Отправить личное сообщение для pas.delger Найти все сообщения от pas.delger
  № 1  
Ответить с цитированием
pas.delger
 
Аватар для pas.delger

блогер
Регистрация: Mar 2010
Сообщений: 108
Записей в блоге: 1
По умолчанию Нужна помощь с crossdomain.xml

Добрый день, дорогие друзья!

Я делаю приложение для ВК и есть проблема. Замут у меня в приложении сложный, поэтому постараюсь крайне доступно объяснить:

Моя флешка, быдем ее называть "flash.swf" загруженная в ВК, соединяется с сервером "http://myserver.com" и из одного из вложенных каталогов, допустим, "/templates/" загружает в себя еще один файл swf, допустим, "template.swf". Загружается стандартно, при помощи flash.display.Loader и URLRequest. Так вот, этот самый template.swf, при определенных обстоятельствах извещает событие (dispatchEvent), на которое подписана моя флешка flash.swf. Т.е, постараюсь короче, та флешка, что в ВК, должна обработать схваченное событие из загруженной флешки с другого сервера. Но, когда тещу проект с локалки выбает ошибку: *** Нарушение безопасности изолированной среды ***. При запуске из ВК, естественно, тоже ничего хорошего не происходит.. А вот если разместить флешку на сервер, откуда она грузит другую флешку, все работает прекрасно!

Путем гуглинга я узнал, что на сервак нужно закинуть файл crossdomain.xml следующего содержания:

Код:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
таким образом разрешить соединяться с сервером со всех других доменов. Но вот беда... Не получается! Все равно выдает еррор.

Я этот xml закинул и в корень сервера, и в ту папку откуда грузит, и вообще во все папки. Но все безуспешно! Очень жду вашей помощи... Спасибо!

Старый 25.05.2011, 02:50
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 2  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Чтобы локально все работало, нужно прописать флэшку как доверенную в настройках безопасности плеера.
__________________
тонкий тролль, осеянный благодатью

Старый 25.05.2011, 02:56
pas.delger вне форума Посмотреть профиль Отправить личное сообщение для pas.delger Найти все сообщения от pas.delger
  № 3  
Ответить с цитированием
pas.delger
 
Аватар для pas.delger

блогер
Регистрация: Mar 2010
Сообщений: 108
Записей в блоге: 1
в общем-то не думаю, что основная проблема в этом.. все таки, основная моя задача, что бы это работало не локально а ВК. а локально это только для тестирования..
задолбался уже с этой проблемой, не понимаю что может быть не так!

Старый 25.05.2011, 03:02
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 4  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Сорри, неправильно понял.
Вам поможет Security.allowDomain().
__________________
тонкий тролль, осеянный благодатью

Старый 25.05.2011, 03:25
pas.delger вне форума Посмотреть профиль Отправить личное сообщение для pas.delger Найти все сообщения от pas.delger
  № 5  
Ответить с цитированием
pas.delger
 
Аватар для pas.delger

блогер
Регистрация: Mar 2010
Сообщений: 108
Записей в блоге: 1
Большое спасибо, стало лучше, но не совсем.

Вылез новый косяк, похоже, что что-то с евентами:
TypeError: Error #1034: Ошибка типа Coercion: невозможно преобразовать FaceDetectorEvent@2636d0a1 в FaceDetectorEvent.

Опять же, моем сервере все прекрасно, а на локалке ошибка и ВК тоже ничего не происходит..

Такое ощущение, что он воспринимает евент извещаемый загруженной флешкой и евент, на который я подписан как евенты разных типов. Не странно ли?

Добавлено через 8 минут
извините, я ошибся.. на моем сервере тоже не работает..

Добавлено через 46 минут
Действително, очень странная ситуация. До того как я вызвал метод Security.allowDomain("http://myserver.com"); оно прекрасно работало на моем сервере, а сейчас нигде не работает. ох беда...

Старый 25.05.2011, 08:09
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 6  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
У контакта свой кроссдоменник:
Код:
<?xml version="1.0"?>
 <cross-domain-policy>
 <site-control permitted-cross-domain-policies="master-only"/>
 <allow-http-request-headers-from domain="vk.com" headers="*"/>
 <allow-http-request-headers-from domain="*.vk.com" headers="*"/>
 <allow-http-request-headers-from domain="vkontakte.ru" headers="*"/>
 <allow-http-request-headers-from domain="*.vkontakte.ru" headers="*"/>
 <allow-access-from domain="vk.com" to-ports="80" />
 <allow-access-from domain="*.vk.com" to-ports="80" />
 <allow-access-from domain="vkontakte.ru" to-ports="80" />
 <allow-access-from domain="*.vkontakte.ru" to-ports="80" />
 </cross-domain-policy>

Старый 25.05.2011, 09:59
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 7  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Цитата:
Такое ощущение, что он воспринимает евент извещаемый загруженной флешкой и евент, на который я подписан как евенты разных типов. Не странно ли?
Фактически так оно и есть. Если два одинаковых класса принадлежат к разным доменам, то для флэша это два разных класса.
Как это грамотно разруливать, я, честно говоря, не знаю. В голову приходят только workaround'ы типа подписывания на Event и доставания нужных данных вручную.
__________________
тонкий тролль, осеянный благодатью

Старый 25.05.2011, 12:32
pas.delger вне форума Посмотреть профиль Отправить личное сообщение для pas.delger Найти все сообщения от pas.delger
  № 8  
Ответить с цитированием
pas.delger
 
Аватар для pas.delger

блогер
Регистрация: Mar 2010
Сообщений: 108
Записей в блоге: 1
Но ведь, если обе флешки расположены на одном сервере, следовательно, они должны принадлежать одному домену и должно работать, я правильно понимаю? Но не работает. До того как я прописал Security.allowDomain() оно хотя бы работало когда размещено на одном сервере, а сейчас не работает нигде, выплевывает Error #1034.

А можно подробнее, что Вы имели ввиду под workaround-ами? Ведь, если я правильно понял, я так и делаю: я подписываюсь на событие, через которое передаю объект нужный мне объект (detector). Вот код подгружаемой с сервера флешки, которая генерит событие:

Код AS3:
public function dispatchFaceDetectorEvent(e:String, detector:FaceDetector):void{
			if (e=="click"){
				dispatchEvent(new FaceDetectorEvent(detector, FaceDetectorEvent.FACE_CLICK));
			}
			if (e=="rollOver"){
				dispatchEvent(new FaceDetectorEvent(detector, FaceDetectorEvent.FACE_ROLL_OVER));
			}
			if (e=="rollOut"){
				dispatchEvent(new FaceDetectorEvent(detector, FaceDetectorEvent.FACE_ROLL_OUT));
			}
		}
А вот код флешки которая ее в себя грузит и подписывается на ее событие:

Код AS3:
public class EditorWindow extends MovieClip{
		public static var instance:EditorWindow;
 
		var template:Loader = new Loader;
		var request:URLRequest;
 
		public function EditorWindow() {
			Security.allowDomain(Settings.host); //Здесь лежит адрес сервера в виде http://myserver.com
			instance = this;
			loadTemplate();
		}
 
		public function loadTemplate():void{
			request = new URLRequest(Variables.activePreview.swfURL); //Здесь лежит адрес нужной флешки на сервере
			template.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderEventHandler);
			template.addEventListener(FaceDetectorEvent.FACE_CLICK, detetectorEventHandler);
			template.addEventListener(FaceDetectorEvent.FACE_ROLL_OVER, detetectorEventHandler);
			template.load(request);
		}
 
		private function detetectorEventHandler(e:FaceDetectorEvent):void{
			if (e.type=="faceClick"){
				trace("click");
			}
		}
 
		private function loaderEventHandler(e:Event):void{
			if (e.type=="complete"){
				addChild(template);
				template.x = this.width/2-template.width/2;
				template.y = this.height/2-template.height/2-25;
			}
		}
 
	}
ну а вот, на всякий случай, класс моего события:

Код AS3:
public class FaceDetectorEvent extends Event{
		public var detector:FaceDetector;
		public static const FACE_ROLL_OVER:String = "faceRollOver";
		public static const FACE_ROLL_OUT:String = "faceRollOut";
		public static const FACE_CLICK:String = "faceClick";
 
		public function FaceDetectorEvent(detector:FaceDetector, type:String){
			super(type, true, false);
			this.detector = detector;
		}
 
	}
Результат - Error #1034

Очень нужна помощь!!!


Последний раз редактировалось pas.delger; 25.05.2011 в 12:36.
Старый 25.05.2011, 17:19
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 9  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
попробуйте кросдомаин.хмл с моего сайта. И когда обращаетесь к сайту за контентом, попробуйте через www.mycom.com/ у меня тоже проблемы были с секурити эвентами и обращение через www помогло тогда.
__________________
Гоночка

Старый 25.05.2011, 17:28
pas.delger вне форума Посмотреть профиль Отправить личное сообщение для pas.delger Найти все сообщения от pas.delger
  № 10  
Ответить с цитированием
pas.delger
 
Аватар для pas.delger

блогер
Регистрация: Mar 2010
Сообщений: 108
Записей в блоге: 1
спасибо, так а где взять Ваш кроссдомен? я вставил спецовый контактовский кроссдомен, предложенный goodguy, но это все равно не помогло, и я чувствую что врятли это из за кроссдомена.

то есть Вы предлагаете обращаться к серверу не через http а через WWW? спасибо, попробую..

Создать новую тему Ответ Часовой пояс GMT +4, время: 02:28.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 02:28.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.