PDA

Просмотр полной версии : Policy file request


stinkybob
17.01.2010, 21:00
Доброго времени суток

У меня есть флеш клиент на АС2 и сокет сервер на С++

При исполнении из IDE (Flash) то все работает нормально, но когда выкладываю свф на вебсервер и запускаю из браузера то на сокет сервер прихолит сообщение

<policy-file-request/>

cordomain.xml

<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*" to-ports="80,2803"/>
</cross-domain-policy>

flash

Security.allowDomain("xxx.ru");
Security.loadPolicyFile("http://xxx.ru/crossdomain.xml");

Ничего это не помогает :( Подскжате пожалуйста что делать

etc
17.01.2010, 23:50
Ну так с сокета вы ему кроссдоменник отдаете или нет?

stinkybob
18.01.2010, 00:16
Нет =) я не понимаю как его с с++ отдать =)


Пытался сделать так :

char xml[500]="<?xml version='1.0'?> <!DOCTYPE cross-domain-policy SYSTEM 'http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd'> <cross-domain-policy> <allow-access-from domain='*' /> </cross-domain-policy>";

send(Client, xml, strlen(xml) + 1, 0);

ничего не выходит

Добавлено через 2 часа 35 минут
Все.. разобрался

клиент на флеше:

Security.allowDomain("localhost");
Security.loadPolicyFile("xmlsocket://localhost:1000");

var socket:XMLSocket = new XMLSocket();
socket.onConnect = function(success:Boolean) {
if (success) {
o("Connection succeeded!");
socket.send("Boss");
} else {
o("Connection failed!");
}
};
if (!socket.connect("localhost", 1000)) {

ну и так далее....

код на с++

сразу после соединения

char xml[500]="<?xml version='1.0'?> <!DOCTYPE cross-domain-policy SYSTEM 'http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd'> <cross-domain-policy> <allow-access-from domain='*' to-ports='1000' /> </cross-domain-policy>";

send(Client, xml, strlen(xml) + 1, 0);

etc
18.01.2010, 08:18
Да, только после выдачи не забудьте закрыть этот коннект. Хотя флеш это и без вас сделает.
И да, нуль-байт в конце строки обязательно.

stinkybob
18.01.2010, 16:15
Нуль байт это что? :)

etc
18.01.2010, 18:03
Нуль байт это что? :)

http://ru.wikipedia.org/wiki/Нуль-терминированная_строка

Сашаc
19.02.2010, 21:06
Да, только после выдачи не забудьте закрыть этот коннект. Хотя флеш это и без вас сделает.
И да, нуль-байт в конце строки обязательно.

А почему надо закрыть?

И тогда следующий вопрос - как сделать так, что бы постоянно висело соединение между сервером и флэшкой? Что бы сервер мог сам по своей инициативе, что то отправлять?

etc
20.02.2010, 16:43
Закрыть надо, потому что такой механизм взаимодейтствия. Затем соединение откроется вновь.
Если вы понимаете, о чем речь, то второго вопроса не было бы.

Frozzeg
06.03.2010, 05:56
вообще бредовая политика безопасности

etc
06.03.2010, 14:35
вообще бредовая политика безопасности

Вполне нормальная. И безопасно.

Frozzeg
19.03.2010, 04:34
его подделать также легко, как и Referer в http

etc
19.03.2010, 07:50
его подделать также легко, как и Referer в http
Знаете, при желании, замок на двери тоже можно болгаркой срезать. И что, теперь дверь не надо запирать на замок?

Frozzeg
19.03.2010, 14:36
это скорее не замок, а щеколда)

etc
19.03.2010, 20:49
это скорее не замок, а щеколда)

Попробуйте эту щеколду обойти, имея на руках юзера с установленным FP10 и только.

Dimitry_II
20.03.2010, 18:12
Во-во! Что-то очень мне кажется, что человек просто не очень понимает, о чем говорит ...
Я бы даже облегчил ему задачу: не только юзера с FP10, но еще продвинутого юзера со сниффером, декомпилятором и прочими "примочками". И пусть "обойдет".