|
|
|||||
Нужна помощь с 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 закинул и в корень сервера, и в ту папку откуда грузит, и вообще во все папки. Но все безуспешно! Очень жду вашей помощи... Спасибо! |
|
|||||
strange mood
|
Чтобы локально все работало, нужно прописать флэшку как доверенную в настройках безопасности плеера.
__________________
тонкий тролль, осеянный благодатью |
|
|||||
в общем-то не думаю, что основная проблема в этом.. все таки, основная моя задача, что бы это работало не локально а ВК. а локально это только для тестирования..
задолбался уже с этой проблемой, не понимаю что может быть не так! |
|
|||||
strange mood
|
Сорри, неправильно понял.
Вам поможет Security.allowDomain().
__________________
тонкий тролль, осеянный благодатью |
|
|||||
Большое спасибо, стало лучше, но не совсем.
Вылез новый косяк, похоже, что что-то с евентами: TypeError: Error #1034: Ошибка типа Coercion: невозможно преобразовать FaceDetectorEvent@2636d0a1 в FaceDetectorEvent. Опять же, моем сервере все прекрасно, а на локалке ошибка и ВК тоже ничего не происходит.. Такое ощущение, что он воспринимает евент извещаемый загруженной флешкой и евент, на который я подписан как евенты разных типов. Не странно ли? Добавлено через 8 минут извините, я ошибся.. на моем сервере тоже не работает.. Добавлено через 46 минут Действително, очень странная ситуация. До того как я вызвал метод Security.allowDomain("http://myserver.com"); оно прекрасно работало на моем сервере, а сейчас нигде не работает. ох беда... |
|
|||||
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> |
|
|||||
strange mood
|
Цитата:
Как это грамотно разруливать, я, честно говоря, не знаю. В голову приходят только workaround'ы типа подписывания на Event и доставания нужных данных вручную.
__________________
тонкий тролль, осеянный благодатью |
|
|||||
Но ведь, если обе флешки расположены на одном сервере, следовательно, они должны принадлежать одному домену и должно работать, я правильно понимаю? Но не работает. До того как я прописал Security.allowDomain() оно хотя бы работало когда размещено на одном сервере, а сейчас не работает нигде, выплевывает Error #1034.
А можно подробнее, что Вы имели ввиду под workaround-ами? Ведь, если я правильно понял, я так и делаю: я подписываюсь на событие, через которое передаю объект нужный мне объект (detector). Вот код подгружаемой с сервера флешки, которая генерит событие: 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)); } } 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; } } } 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; } } Очень нужна помощь!!! Последний раз редактировалось pas.delger; 25.05.2011 в 12:36. |
|
|||||
попробуйте кросдомаин.хмл с моего сайта. И когда обращаетесь к сайту за контентом, попробуйте через www.mycom.com/ у меня тоже проблемы были с секурити эвентами и обращение через www помогло тогда.
__________________
Гоночка |
|
|||||
спасибо, так а где взять Ваш кроссдомен? я вставил спецовый контактовский кроссдомен, предложенный goodguy, но это все равно не помогло, и я чувствую что врятли это из за кроссдомена.
то есть Вы предлагаете обращаться к серверу не через http а через WWW? спасибо, попробую.. |
Часовой пояс GMT +4, время: 02:28. |
|
« Предыдущая тема | Следующая тема » |
|
|