Руководство по actionscript. часть 3, стр. 102
Теперь, когда мы знаем, как создавать файл политики безопасности, разрешающий сокетное соединение, рассмотрим, как SWF-файл может получить разрешение из этого файла политики безопасности.
Получение файла политики безопасности через сокет
Файлы политики безопасности, разрешающие сокетные соединения, могут передаваться либо непосредственно через сокет, либо по протоколу HTTP. Файлы политики безопасности, передаваемые через сокет, должны размещаться в том же домене или на том же IP-адресе, с которым планируется устанавливать соединение. При этом можно использовать либо порт, с которым устанавливается соединение, либо другой порт. В любом случае сервер, обслуживающий порт, через который передается файл политики безопасности, должен общаться с приложением Flash Player с помощью очень простого протокола получения файла политики безопасности. Протокол состоит из одного тега
Таким образом, пользовательские серверы, желающие обрабатывать запросы на получение файла политики безопасности и осуществлять нормальное взаимодействие на одном и том же порте, должны реализовать и код, отвечающий на запросы на получение файла политики безопасности, и код, который управляет обычным сокетным взаимодействием. Если сервер обрабатывает запросы на получение файла политики безопасности и осуществляет обычное взаимодействие на одном и том же порте, то SWF-файлы из разрешенных регионов могут подключаться к этому серверу, выполняя желаемую операцию сокетного соединения.
Предположим, что многопользовательский игровой сервер, размещенный на сайте site-a. com, обрабатывает игровые запросы и запросы на получение файла политики безопасности на порте 3000. Файл политики безопасности этого сервера разрешает доступ для источников www. site-b. com и site-b. com, как показано в следующем коде:
SYSTEM «http://www. adobe. com/xiTil/dtds/cross-doiTiain-policy. dtd»>
Чтобы подключиться к порту 3000 сайта site-a. com, любой SWF-файл, загруженный из источника www. site-b. com или site-b. com, может использовать следующий код:
var socket:Socket = new Socket( ): try { .
socket. connect(«site-a. com». 3000): } catch (e:SecurityError) { trace(«Connection problem!»): trace(e. message):
}
При выполнении предыдущего кода перед тем, как будет разрешено требуемое подключение к порту 3000, приложение Flash Player автоматически создает отдельное
подключение к порту 3000 и отправляет сообщение